你如何增加biwascheme?

时间:2014-05-29 18:14:54

标签: scheme sicp

有没有人使用过网络ide replit? http://repl.it/languages/Scheme

你如何增加它?

我正在尝试封装一个函数来根据sicp视频2a进行总结。

(define (square a ) 
    (* a a))


(define (sum term a next b)
    (if (> a b)
        0
        (+ (term a) 
            (sum term (next a ) next b))))

(define (sum-int a b)
    (define (identity a) a)
    (sum identity a (+ 1 a) b))


(define (sum-square a b)
    (sum square a (+1 ) b))

    (sum-square 1 2)

备用和方(不工作)

(define (sum-square a b)
    (sum square a (+ 1  a) b))

    (sum-square 1 2)  // getting 2 not a function.

工作代码:

(define (sum-int a b)
    (define (identity a) a)
    (sum identity a (lambda(a)(+ 1 a)) b))

1 个答案:

答案 0 :(得分:2)

您必须将函数作为next参数传递,如下所示:

(define (identity n) n)

(define (sum-int a b)
  (sum identity a add1 b))

(define (sum-square a b)
  (sum square a add1 b))

如果add1未定义,您可以编写自己的版本:

(define (add1 n)
    (+ 1 n))

或者,您可以直接传递lambda

(define (sum-int a b)
  (sum identity a (lambda (n) (+ 1 n)) b))

(define (sum-square a b)
  (sum square a (lambda (n) (+ 1 n)) b))