gpt4 book ai didi

list - 如何添加到方案中的嵌入式列表?

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:10 24 4
gpt4 key购买 nike

我试图在 scheme 中生成一个符号表,但我卡在了 set-symbol 函数上。该数字对应于代码或“范围”的 block 级别。

First symbol it reads in
((c class 0))
Next symbols
(((c class 0) (a int 0) (b float 0)))
We read a bracket and read the next variables to a new scope.
(((a char 1) (d int 1)) ((c class 0) (a int 0) (b float 0)))
We leave that scope and "pop the stack".
(((c class 0) (a int 0) (b float 0)))

我如何始终添加到作用域中第一个列表的最深列表?

最佳答案

我怀疑您最好使用不同的表示形式。其中之一是:

(define (make-symbol-table parent alist)
`(SYMBOL-TABLE ,parent ,@alist))
(define symbol-table-parent cadr)
(define symbol-table-alist cddr)

(define (symbol-table-depth table)
(let ((parent (symbol-table-parent table)))
(if (not parent)
1
(+ 1 (symbol-table-depth parent))))

(define (symbol-table-lookup table name)
(cond ((assoc name (symbol-table-alist table)) => cdr)
(else (let ((parent (symbol-table-parent table)))
(and parent (symbol-table-lookup parent name))))))

关于list - 如何添加到方案中的嵌入式列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15589374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com