我必须将整个计划程序作为列表传递给我的用户定义函数/谓词" is-s-list?"它标识了作为列表传递的方案程序是否是符号列表。
但是,我不明白如何将计划程序列为清单......?
我试过了:
(define P '()) ....i.e a null list
(append P "my entire program")
现在,在功能" is-s-list中执行car / cdr时,我遇到了一些问题?"
我应该如何分析程序的组件以确定程序是否是符号列表?并且,程序真的只是方案符号的列表吗?因此,在使用(符号?(车辆P))检查结束后,我应该返回#f吗?
我想做的是:
在像scheme这样的语言中,我们代表代码,即表达式作为符号列表。
写一个谓词," is-s-list?"将另一个程序作为列表,如果它是一个符号列表,则返回true。
答案 0 :(得分:1)
这是一个Scheme程序,为一个表达式
(begin
(define a 10)
(define b 13)
(define (square n)
(* n n))
(+ (square a) (square b)))
; ==> 269
这是与数据相同的程序,绑定到变量code
:
(define code
'(begin
(define a 10)
(define b 13)
(define (square n)
(* n n))
(+ (square a) (square b))))
code ; ==> (begin ....) (a list of symbols and the occational number)
主要区别在于'
,它将后面的表达式更改为数据而不是代码。在许多其他编程语言中,eval
采用字符串,因为它们没有定义数据类型来将代码表示为数据。这主要是LISP功能。
答案 1 :(得分:1)
Lisp表达式是树类结构 所以你必须解析某种二叉树 以下链接可能会对您有所帮助