所以我读到DrRacket对于常见的lisp来说是一个很好的IDE.我下载了它并将语言设置为R5RS并编写了以下函数定义:
(defun f (x)
(+ 5 5))
Run Code Online (Sandbox Code Playgroud)
但是它返回了一个错误
defun: undefined;
cannot reference undefined identifier
Run Code Online (Sandbox Code Playgroud)
我不知道如何修复它,考虑到defun是常见的lisp中一个完善的关键字.
"程序"一词是否与SICP中的"操作"一词同义?(例如,在下面的章节中.)如果它们不相同,有什么区别和原因?
更具体地说,"复合操作"和"复合程序"之间有什么区别?有没有 ?
这是本书的另一章相关章节:
在我看来,在这些上下文中,SICP中的术语"操作"指的是算术运算(因为到目前为止,在实例中没有使用其他类型的操作 - 无论它们通常是什么).
(define function1 (lambda(val)
(if (list? val)
(function2 (val))
('!list))))
Run Code Online (Sandbox Code Playgroud)
当我尝试输入'(ttt)时,我收到以下错误:
application: not a procedure;
expected a procedure that can be applied to arguments
given: (t t t)
arguments...: [none]
Run Code Online (Sandbox Code Playgroud)
我已经定义了function2,它可以在我自己调用它时工作,但是我无法在function1中调用它.
我不知道发生了什么,但我无法得到这个.
我已经做了很多非常相似的问题,但由于某些原因我无法得到这个问题.
我正试图做一个反击.
(define (make-counter init)
(let ((count init))
((lambda (x)
(begin (set! count (+ count x)) count))1)))
Run Code Online (Sandbox Code Playgroud)
它不会起作用.我如何将状态引入其中?我不知道我以为我知道但它不起作用.我认为创建一个像这样的局部变量会使它工作,但事实并非如此,无论我做什么,价值永远不会改变.我的问题是使初始值可调,我可以让它工作没有它,但不是.