LISP中的以下语句的内存布局图是什么?



我不知道如何为此绘制内存布局,而我是LISP的新手。请帮助我。

(car (cdr ( cdr '(12  (*3 4)  (+ 3 4)  (/4 2)  23))))

假设您在谈论常见的LISP,而不是其他类型的LISP,则可以使用sdraw(从此页面加载后:https://www.cs.cmu.edu.edu/〜dst/lisp/sdraw/sdraw.genericv(显示您表单的内存布局(在LISP中,没有语句,而是表单(。请注意,您必须在适当时插入空格(例如,在操作员及其第一个参数之间,例如(* 3 4),而不是(*3 4)(,而不是两个完全不同的表单(。

so,例如(仅印刷到树的一定级别,请参见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

每个盒子代表一个缺点单元,有两个字段指向CAR和CDR的CDR。

最新更新