代码之家  ›  专栏  ›  技术社区  ›  Hamza Yerlikaya

实现Micro-Manual-LISP

  •  2
  • Hamza Yerlikaya  · 技术社区  · 15 年前

    我正在为中定义的LISP实现一个解释器,

    http://www.scribd.com/vacuum?url=http://www.ee.ryerson.ca/~elf/pub/misc/micromanualLISP.pdf

    4. (LIST e1 ... en) is defined for each n to be 
       (CONS e1 (CONS ... (CONS en NIL))).
    

    (QUOTE (B C D (E F)))
    

    使用上面的结构,

    (QUOTE B C D E F)
    

    没有办法区分嵌套列表,因为它们都变成了一个巨大的缺点链。

    我是不是漏了什么?

    3 回复  |  直到 15 年前
        1
  •  5
  •   Gilles 'SO- stop being evil'    15 年前

    (QUOTE (B C D (E F)))

    (CONS B (CONS C (CONS D (CONS (CONS E (CONS F NIL)) NIL))))
    

    (QUOTE (B C D E F))

    (CONS B (CONS C (CONS D (CONS E (CONS F NIL)) NIL)))
    


    (LIST D (LIST E F)) = (CONS D (CONS (LIST E F) NIL))
    (LIST D E F) = (CONS D (LIST E F))

        2
  •  1
  •   deinst    15 年前
    (QUOTE (B C D (E F)))
    = (...  (CONS (E F) NIL))).
    = (...  (CONS (CONS E (CONS F NIL)) NIL))).
    

    这和

    ( ...(CONS D (CONS E (CONS F NIL))).
    
        3
  •  0
  •   mathk    15 年前
    (QUOTE (B C D (E F))) = (LIST B C D (LIST E F))