在一个小的Scheme脚本中使用Null

时间:2015-10-13 02:40:30

标签: scheme

我正在学习如何使用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,那就行了。谁知道为什么?

1 个答案:

答案 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

的最新Scheme report个州
  

如果obj是空列表,否则返回#f

因此可以将null定义为'()