首页 > 解决方案 > Lisp 中的“*** - EVAL:未定义的函数 X”

问题描述

我正在为一种深奥的编程语言制作解释器,并为它制作了这个程序。但是,它没有给出所需的输出,而是输出

*** - EVAL:未定义的函数 X

任何人都可以帮助澄清这个程序的问题吗?

我已经尝试过用谷歌搜索这个错误,并在这个网站上检查类似的问题。

(setq acc 0)        
(loop              
    (setq x (read-char))                  
    (when (x = #\i)(acc(+ acc 1))) 
    (when (x = #\d)(acc(- acc 1)))        
    (when (x = #\s)(acc(* acc acc)))      
    (when (x = #\o)(write(acc)))  
    (when (x = #\h)(return x))        
    (when (acc <0 or acc =255)(acc =0)))

输入"iiiso"应该给出输出9。但是,实际输出是

*** - EVAL:未定义的函数 X

标签: lispinterpreteresoteric-languages

解决方案


确实需要从一本好的 lisp 书籍开始,例如PCLACL。你会为自己节省很多时间。

Lisp 语法与 C 不同。

在 C 中,相等==是一个中缀运算符,用作x == 1. 在 Lisp 等式谓词=中,eql&c 是普通函数

因此,您需要编写(eql x #\i).

然而,这只是您的代码的许多其他问题之一。你确实需要一本教科书。

另请参见clisp: variable has no value


推荐阅读