代码之家  ›  专栏  ›  技术社区  ›  Himanshu

检查项是否为列表

  •  0
  • Himanshu  · 技术社区  · 8 年前

    AS list? 根据sicp,不是方案中的原语,我正在寻找它的等价原语。我考虑过这些备选方案:

    • pair? 但它回来了 #f 对于 '() .
    • 一对? null? . 看起来还可以,但是是吗?

    有简单点的吗?

    1 回复  |  直到 8 年前
        1
  •  3
  •   Mulan    8 年前

    没有基元,因为列表 () 或A pair? 谁的 cdr 是一个列表。因为一个列表不是一个原语,而是一个带有空列表的成对事件的组合。 list? 可以定义为:

    (define (list? lst)
      (or (null? lst)
          (and (pair? lst)
               (list? (cdr lst)))))