根据存储在列表中的过程定义函数

时间:2017-03-11 01:38:37

标签: functional-programming scheme racket

我是Scheme和函数式编程的新手,我只是开始写一些更复杂的东西。我想知道是否可以根据存储在列表中的过程来定义函数。

假设我们有以下列出代表程序(+ 2 3)和(* 3 4)的其他清单:

'((+ 2 3) (* 3 4))

现在我想写一些代表过程的任何列表(例如(+ 2 3)),并根据它定义一个我以后可以使用的函数。

所以,如果我选择(+ 2 3),我希望声明以下函数:

(define (funct_name) (+ 2 3))

所以基本上,我正在寻找的是一个定义其他函数的函数,它必须在脚本中编写。那么也许是这样的?

(define (def_functions_fromlist) ls) ;this would define the function  
;corresponding to procedure in ls 

提前谢谢你,如果我在这里感到困惑,我很抱歉。

1 个答案:

答案 0 :(得分:1)

返回一个评估列表的匿名函数,如下所示:

(define (def-prod-from ls)
    (lambda () (eval ls)))

这适用于任何输入,而不仅仅是列表。这可能是一个问题,但可能不是。