scheme - DrRacket 定义开始设置!可能应该工作但不

标签 scheme lisp racket

我正在使用 DrRacket 学习 lisp 编程考试..

在讲座的演示中我发现了这段代码:

(define (f a b c)
    (define delta)
    (begin
        (set! delta (- (* b b) (* 4 a c)) 
        (if (>=? delta 0)
             (writeln ”są pierwiastki”)
             (writeln ”nie ma pierwiastków)))))

但它不起作用。 DrRacket 显示:

. define: bad syntax (missing expression after identifier) in: (define delta)

我不能稍后设置 delta 值吗?

问题是什么? 提前致谢

最佳答案

原来报错是因为

(define delta)

缺少一个值。相反,它应该是这样的:

(define delta 0)

还有一些其他问题:

  • 双引号不是 " 字符,无法识别 通过 Racket 。

  • 有些家长错了。

我也不知道为什么它是define-ing delta,然后立即 设置!-ing 它。

我试图修复/简化您发布的内容,并想出了 下列的。但我不太确定该功能应该是什么 做,所以我不知道示例输出是否正确。

#lang racket
(define (f a b c)
  (define delta (- (* b b) (* 4 a c)))
  (if (>= delta 0)
      (displayln "są pierwiastki")
      (displayln "nie ma pierwiastków")))

;; Example output:
(f 1 2 3)
;;-> nie ma pierwiastków
(f 1 200 3)
;;-> są pierwiastki

关于scheme - DrRacket 定义开始设置!可能应该工作但不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24175268/

相关文章:

python-2.7 - 将 Python 翻译成 Scheme/Racket

带有 usocket 库的 Common Lisp 中的 WebSocket 客户端

vector - 给定向量列表的质心

scheme - 如何实现 call-with-values 以匹配 R5RS 中的值示例

scheme - 模块中的鸡肉方案(使用)和(导入)不起作用

scheme - 是拉特吗?方案中的原始函数?

scheme - 为什么 (* 1.1 1.1) 在 Racket 中是 1.2100000000000002?

macros - 如何根据自身定义宏?

linux - GTK/Qt On PLT 方案

scheme - Racket /方案: How to avoid repeating function call in cond