2017-05-03 24 views

回答

1

假设你正在谈论的Common Lisp,而不是其他类型的口齿不清的,你可以使用sdraw(从这个页面加载之后:https://www.cs.cmu.edu/~dst/Lisp/sdraw/sdraw.genericv)来显示您的窗体的内存布局(Lisp中有不是陈述,而是表格)。请注意,您必须通过在适当时插入空格(例如,在运算符与其第一个参数之间插入空格,如(* 3 4)而不是(*3 4)这两种完全不同的形式)来正确格式化表单。

所以,举例来说(这只是打印到树的一定水平时,看到etc.部分):

CL-USER> (sdraw '(car (cdr (cdr '(12 (* 3 4) (+ 3 4) (/ 4 2) 23))))) 

[*|*]--->[*|*]--->NIL 
|  | 
v  v 
CAR  [*|*]--->[*|*]--->NIL 
      |  | 
      v  v 
     CDR  [*|*]--->[*|*]--->NIL 
        |  | 
        v  v 
        CDR  [*|*]--->[*|*]--->NIL 
          |  | 
          v  v 
          QUOTE [*|*]--->[*|*]--->etc. 
            |  | 
            v  v 
            12  [*|*]--->[*|*]--->[*|*]--->NIL 
               |  |  | 
               v  v  v 
               *  3  4 

每个方块代表一个cons单元,两个字段指向汽车和单元格的cdr。

+0

该链接看起来坏了......也许你的意思是https://www.cs.cmu.edu/~dst/Lisp/sdraw/sdraw.generic? – djeis

+0

是的,这是链接。 – Renzo