如何在球拍中编写功能

时间:2013-01-22 17:06:20

标签: scheme racket

新手问题:你怎么用球拍写这个?

10x - 6 = 3x + 7

我很难弄清楚我会把= 3x + 7放在哪里。

2 个答案:

答案 0 :(得分:2)

试试这个:

(= (- (* 10 x) 6)
   (+ (*  3 x) 7))

当然,假设先前已为x变量分配了值。现在,如果要将表达式作为函数的一部分进行求值(如标题所示),那么执行以下操作:

(define (test x)
  (= (- (* 10 x) 6)
     (+ (*  3 x) 7)))

答案 1 :(得分:0)

优先级的数学约定,声明如此:

((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表达式。