你如何增加biwascheme?

你如何增加biwascheme?,scheme,sicp,Scheme,Sicp,有人用过在线ide吗 你如何增加它 我试图封装一个函数来总结基于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

有人用过在线ide吗

你如何增加它

我试图封装一个函数来总结基于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-int a b)
    (define (identity a) a)
    (sum identity a (lambda(a)(+ 1 a)) b))
必须将函数作为
下一个
参数传递,如下所示:

(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))

我还没有完成学习计划,但是如果你想返回一个函数,你不需要
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))