方案语言中表达式 let 的问题语法错误
A syntactic error in the question with the expression let in the scheme language
我是scheme scheme新手,开始自学scheme scheme。我解决问题以提高我的语言水平。有一题我答对了,但我想不出错在哪里。我想我把 let 写错了地方。我花了好几个小时来找出问题所在,但我不知道问题出在哪里。
我试着玩弄括号并改变它们的位置,但我觉得这无济于事,而且让我更加困惑。
除最后一段代码外,一切正常。
非常感谢帮助
源代码:
#lang racket
(define(make_times_n n)
(lambda (x) (* x n)))
(define (square2 x)
((make_times_n x) x))
(define (make-parabola a b c)
(lambda (x) (+ ((make_times_n a) (square2 x)) ((make_times_n b) x) c)))
(define (make-triple a b c)
(lambda (x) (* (- x a) (- x b) (- x c))))
(define (make_triple_or_parabola_N a b c N)
( let* (triple ((make-triple a b c) N)) (parabola ((make-parabola a b c) N) ) )
(if ( > triple parabola ) triple parabola)
)
您缺少一些括号,这是编写和缩进 let*
:
的正确方法
(define (make_triple_or_parabola_N a b c N)
(let* ((triple ((make-triple a b c) N))
(parabola ((make-parabola a b c) N)))
(if (> triple parabola)
triple
parabola)))
将其与您所写的进行比较:
(let* (triple ((make-triple a b c) N))
(parabola ((make-parabola a b c) N))
...)
根据 documentation 我们需要一些额外的 ()
围绕变量值对列表,如下所示:
(let* ((triple ((make-triple a b c) N))
(parabola ((make-parabola a b c) N)))
...)
我是scheme scheme新手,开始自学scheme scheme。我解决问题以提高我的语言水平。有一题我答对了,但我想不出错在哪里。我想我把 let 写错了地方。我花了好几个小时来找出问题所在,但我不知道问题出在哪里。 我试着玩弄括号并改变它们的位置,但我觉得这无济于事,而且让我更加困惑。
除最后一段代码外,一切正常。
非常感谢帮助
源代码:
#lang racket
(define(make_times_n n)
(lambda (x) (* x n)))
(define (square2 x)
((make_times_n x) x))
(define (make-parabola a b c)
(lambda (x) (+ ((make_times_n a) (square2 x)) ((make_times_n b) x) c)))
(define (make-triple a b c)
(lambda (x) (* (- x a) (- x b) (- x c))))
(define (make_triple_or_parabola_N a b c N)
( let* (triple ((make-triple a b c) N)) (parabola ((make-parabola a b c) N) ) )
(if ( > triple parabola ) triple parabola)
)
您缺少一些括号,这是编写和缩进 let*
:
(define (make_triple_or_parabola_N a b c N)
(let* ((triple ((make-triple a b c) N))
(parabola ((make-parabola a b c) N)))
(if (> triple parabola)
triple
parabola)))
将其与您所写的进行比较:
(let* (triple ((make-triple a b c) N))
(parabola ((make-parabola a b c) N))
...)
根据 documentation 我们需要一些额外的 ()
围绕变量值对列表,如下所示:
(let* ((triple ((make-triple a b c) N))
(parabola ((make-parabola a b c) N)))
...)