标签: scheme

我在DrRacket做错了什么

所以我读到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中一个完善的关键字.

scheme common-lisp racket r5rs

-3
推荐指数
1
解决办法
558
查看次数

SICP术语:程序和操作之间的区别

"程序"一词是否与SICP中的"操作"一词同义?(例如,在下面的章节中.)如果它们不相同,有什么区别和原因?

更具体地说,"复合操作"和"复合程序"之间有什么区别?有没有 ?

SICP第1.1.4章复合程序

这是本书的另一章相关章节:

SICP第1.2章程序及其生成的过程

在我看来,在这些上下文中,SICP中的术语"操作"指的是算术运算(因为到目前为止,在实例中没有使用其他类型的操作 - 无论它们通常是什么).

lisp scheme terminology sicp

-4
推荐指数
1
解决办法
1099
查看次数

为什么没有方案允许你从另一个函数中调用函数?

(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中调用它.

lisp scheme

-4
推荐指数
1
解决办法
194
查看次数

如何设置一个设置为"1"的计数器

我不知道发生了什么,但我无法得到这个.

我已经做了很多非常相似的问题,但由于某些原因我无法得到这个问题.

我正试图做一个反击.

      (define (make-counter init)
           (let ((count init))
             ((lambda (x)
           (begin (set! count (+ count x)) count))1)))
Run Code Online (Sandbox Code Playgroud)

它不会起作用.我如何将状态引入其中?我不知道我以为我知道但它不起作用.我认为创建一个像这样的局部变量会使它工作,但事实并非如此,无论我做什么,价值永远不会改变.我的问题是使初始值可调,我可以让它工作没有它,但不是.

scheme variable-assignment

-5
推荐指数
1
解决办法
495
查看次数