lambda表达式指的是一个匿名函数,可以将之作为参数传递给map等容器,然后被容器内部调用之。
newlisp的官方文档在这里:http://www.newlisp.org/downloads/manual_frame.html
参考lambda一节,说其和fn相同,fn是其更方便的简写。下面的两个例子分别使用了lambda和fn,效果完全一样。它们都对map中的list做了加法操作。
> (map (lambda (x) (+ x x)) '(1 2 3 4 5)) (2 4 6 8 10) > (map (fn (x) (+ x x)) '(1 2 3 4 5)) (2 4 6 8 10)
而有名称的函数使用define进行定义,其内部也实际上使用了lambda表达式。
下面的例子可以说明这点:
> (define (square x) (* x x)) (lambda (x) (* x x))
只是这个lambda有了一个symbol-- square,方便日后引用。
因此我们以后可以在任何地方通过square来调用该lambda表达式。
> (square 7) 49
现在可以通过lambda?来检测是不是lambda表达式:
> (lambda? square) true