我正在学习如何使用Scheme写入并使用Null击中路障。我在这个视频系列中有以下剧本......
https://www.youtube.com/watch?v=Qqext1NwmqM&index=2&list=PLgyU3jNA6VjRMB-LXXR9ZWcU3-GCzJPm0
脚本...
(define (my-map fn lst)
(if (null? lst)
null
(cons (fn (car lst)) (my-map fn (cdr lst)))))
这只是重新定义Scheme中的map函数。它在第三行失败为" null:undefined。不能引用未定义的标识符"当我传递一个函数和一个列表。
我刚刚复制了视频显示的内容,因此不确定它为什么会失败。如果我为'()切换出null,那就行了。谁知道为什么?
答案 0 :(得分:1)
您的Scheme解释器很可能没有null
符号绑定到'()
值,因为语言规范不需要这样做。要么这样做:
(define null '())
或等同于此,正如您已经猜到的那样:
(define (my-map fn lst)
(if (null? lst)
'()
(cons (fn (car lst))
(my-map fn (cdr lst)))))
请注意(null? obj)
应返回#t
如果
obj
是空列表,否则返回#f
因此可以将null
定义为'()
。