【发布时间】:2017-03-11 01:38:37
【问题描述】:
我是 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
提前谢谢你,如果我在这里看起来太困惑了,我很抱歉。
【问题讨论】:
-
(define (funct_name) (+ 2 3))不是函数。你的意思是(lambda () (+ 2 3))? -
@Unlocked 哦...我认为define 定义了一个函数,至少在我的介绍课程中是这样告诉我的。可能有点跑题了,但是这两种表达方式有什么区别呢?
-
(define)定义了一个变量,但是有一个特殊的形式来定义函数。(lambda)是一个函数。(define (f x) x)是(define f (lambda (x) x))的简写。当他们说(define)定义了一个函数时,他们并没有对你撒谎,但它的作用还不止于此。
标签: functional-programming scheme racket