新手问题:你会怎么用球拍写这个?
10x - 6 = 3x + 7
我很难弄清楚我应该把= 3x + 7
.
尝试这个:
(= (- (* 10 x) 6)
(+ (* 3 x) 7))
当然,假设之前已经为x
变量分配了一个值。现在,如果要将表达式作为函数的一部分进行评估(如标题所示),请执行以下操作:
(define (test x)
(= (- (* 10 x) 6)
(+ (* 3 x) 7)))
该语句的优先级组的数学约定如下:
((10 * x) - 6) = ((3 * x) + 7)
在数学中,我们将运算符写在表达式的中间:foo OP bar
,但在 Racket 中,运算符是第一位的:(OP foo bar)
。因此,如果您只是将每个表达式打乱以匹配 Racket 方式,您将得到:
((10 * x) - 6) = ((3 * x) + 7) ;=> swap = and (10x - 6)
(= ((10 * x) - 6) ((3 * x) + 7)) ;=> swap - and 10x
(= (- (10 * x) 6) ((3 * x) + 7)) ;=> swap * and 10
(= (- (* 10 x) 6) ((3 * x) + 7)) ;=> swap + and 3x
(= (- (* 10 x) 6) (+ (3 * x) 7)) ;=> swap * and 3
(= (- (* 10 x) 6) (+ (* 3 x) 7)) ;=> done
既然我们已经重新排列了表达式,所以运算符放在第一位,我们就有了一个有效的 Racket 表达式。