Scheme DrRacket定义开始集!也许应该工作,但不要
我正在学习用DrRacket进行lisp编程考试 在演讲中,我发现了以下代码:Scheme DrRacket定义开始集!也许应该工作,但不要,scheme,lisp,racket,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))))) 但
(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
值吗
有什么问题?
提前感谢试试这个:
#lang racket
(define (f a b c)
(define delta 0)
(set! delta (- (* b b) (* 4 a c)))
(if (>= delta 0)
(displayln "są pierwiastki")
(displayln "nie ma pierwiastków")))
您的代码有什么问题:
- 这可能是复制粘贴错误,但在Scheme中,我们使用
字符来分隔字符串,而不是像代码中那样使用“
。最后一行缺少结束符”
“
- 尽管一些解释器接受没有初始值的
,但标准是变量名后面必须有一个值定义
集合末尾缺少右括号代码>行
定义
和
设置代码>行可以合并为一行:
(定义delta(-(*b-b)(*4a-c))
运算符在Scheme中不是标准的,它可能在解释器中工作,但如果可能,请使用标准的=?
=
程序在Scheme中不是标准的,在Racket中可以用它代替writeln
displayln
- 这不是一个真正的错误,但您不需要在过程定义中编写
,它是隐式的begin
racket
,但相信我,你所拥有的不是有效的racket代码-heck,甚至不是标准方案。确保使用正确的解释器,并对文本中的打字错误保持高度警惕。尝试以下方法:
#lang racket
(define (f a b c)
(define delta 0)
(set! delta (- (* b b) (* 4 a c)))
(if (>= delta 0)
(displayln "są pierwiastki")
(displayln "nie ma pierwiastków")))
您的代码有什么问题:
- 这可能是复制粘贴错误,但在Scheme中,我们使用
字符来分隔字符串,而不是像代码中那样使用“
。最后一行缺少结束符”
“
- 尽管一些解释器接受没有初始值的
,但标准是变量名后面必须有一个值定义
集合末尾缺少右括号代码>行
定义
和
设置代码>行可以合并为一行:
(定义delta(-(*b-b)(*4a-c))
运算符在Scheme中不是标准的,它可能在解释器中工作,但如果可能,请使用标准的=?
=
程序在Scheme中不是标准的,在Racket中可以用它代替writeln
displayln
- 这不是一个真正的错误,但您不需要在过程定义中编写
,它是隐式的begin
总而言之:问题中的代码似乎是针对不同的解释器的,这个问题被标记为
racket
,但相信我,你所拥有的不是有效的racket代码-heck,甚至不是标准方案。确保使用正确的解释器,并对文本中的打字错误保持高度警惕。原始错误消息是因为
(define delta)
缺少一个值。相反,它应该是这样的:
(define delta 0)
还有一些其他问题:
- 双引号不是
字符,无法识别 靠敲诈“
- 有些家长错了
define
-ingdelta
,然后立即
设置!
-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
原始错误消息是因为
(define delta)
缺少一个值。它应该类似于:
(define delta 0)
还有一些其他问题:
- 双引号不是
字符,无法识别 靠敲诈“
- 有些家长错了
define
-ingdelta
,然后立即
set代码>-正在加载它
我试图修改/简化你发布的内容,并提出了
下列的但是我不确定这个函数应该是什么
是的,所以我不知道示例输出是否正确
#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
我认为格雷格已经解决了你的问题,但我只想添加明显的let
版本的代码:
;;对于给定的ax^2+bx+c=0
;; 这将显示它是否至少有一个
;; 实数回答与否
(定义(方程式有答案a b c)
(let((((*4B)(*4A)))
(如果(>=增量0)
(displayln“有答案”)
(displayln“没有答案”))
要创建谓词,可以执行以下操作:
;;对于给定的ax^2+bx+c=0
;; 如果至少有一个,则返回#t
;; 实数回答,否则为#f
(定义(方程式有答案?a b c)
(>=(((*BB)(*4C))0)
我认为格雷格已经解决了你的问题,但我只想添加明显的let
版本的代码:
;;对于给定的ax^2+bx+c=0
;; 这将显示它是否至少有一个
;; 实数回答与否
(定义(方程式有答案a b c)
(let((((*4B)(*4A)))
(如果(>=增量0)
(displayln“有答案”)
(displayln“没有答案”))
要创建谓词,可以执行以下操作:
;;对于给定的ax^2+bx+c=0
;; 如果至少有一个,则返回#t
;; 实数回答,否则为#f
(定义(方程式有答案?a b c)
(>=(((*BB)(*4C))0)
如果代码不是英文的,并且您没有说明该过程应该做什么。这是很难帮助的。即使它是英文的,你也应该提供一个预期的结果。这个函数似乎在检查一个二次方程是否有实解,文本是波兰语,读起来像“有元素”和“没有元素”。我读了你的评论,也从