2017-05-03 59 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