以下功能有效:
(define (testfn)
(define (contains sl item) (ormap (λ(x)(equal? item x)) sl))
(if (contains (list 1 2 3) 2) "yes" "no"))
(testfn)
输出:
"yes"
但是,使用λ符号的跟随不会:
(define (testfn2)
(λ (contains sl item) (ormap (λ(x)(equal? item x)) sl))
(if (contains (list 1 2 3) 2) "yes" "no"))
错误是:
contains: unbound identifier in module in: contains
可以使用λ符号来定义可以在多个地方调用的内部(或一般)函数吗?
答案 0 :(得分:0)
是的,但您需要像使用任何其他标识符一样定义它。
(define (testfn2)
(define contains (λ (sl item) (ormap (λ(x)(equal? item x)) sl)))
(if (contains (list 1 2 3) 2) "yes" "no"))
你的代码创建了一个函数但是(1)它没有绑定任何东西,(2)它实际上需要三个参数,第一个是“包含”。