【发布时间】:2016-04-23 08:03:19
【问题描述】:
我在弄清楚如何使用 Scheme 中的列表中包含的 lambdas 时遇到了一些麻烦。例如,我有以下代码:
(define abc '((lambda (x) (* x x))))
我想从列表中取出第一个 lambda 并将其应用于一些数字。这是我目前所拥有的:
(map (car abc) '(1 2 3))
但是,我收到以下错误:
;The object (lambda (x) (* x x)) is not applicable.
但是当我直接使用 lambda 尝试同样的事情时,它可以工作:
(map (lambda (x) (* x x)) '(1 2 3))
;Value 15: (1 4 9)
谁能帮我理解我做错了什么?
【问题讨论】:
-
您将
'((lambda ...))视为与(list (lambda ...))相同的问题,但它们完全不同。 This question 及其答案很好地解释了原因。 -
如果您对
quote的工作原理感到困惑,那么如果您在任何地方都使用list,并且永远不要将quote用于列表,只用于符号,那么您将少犯很多错误.
标签: lambda scheme lisp higher-order-functions mit-scheme