代码之家  ›  专栏  ›  技术社区  ›  Harshada Kelkar

方案程序作为符号列表

  •  1
  • Harshada Kelkar  · 技术社区  · 6 年前

    我必须将整个scheme程序作为列表传递给我的用户定义函数/谓词“is-s-list?”它标识作为列表传递的方案程序是否为符号列表。

    然而,我不明白如何将scheme程序作为列表。。。?

    我试过这个:

    (define P '())  ....i.e a null list
    (append P "my entire program")
    

    现在,我在“is-s-list”功能中执行car/cdr时遇到了一些问题

    我应该如何分析程序的组件,以确定程序是否是符号列表?那么,一个程序真的只是一个方案符号的列表吗?那么,我应该在使用(symbol?(car P))的检查结束后返回#f吗?

    我想做的是:

    在scheme等语言中,我们将代码,即表达式表示为符号列表。

    写一个谓词,“is-s-list?”它将另一个程序作为列表,如果它是符号列表,则返回true。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Sylwester    6 年前

    以下是一个计划程序 一个表达式

    (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特性。

        2
  •  1
  •   ganesh    6 年前

    Lisp表达式是树状结构 所以你必须解析某种二叉树 以下链接可能会帮助您

    S-expr