scheme - 如何使用 biwascheme 进行增量?

标签 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))

最佳答案

您必须传递一个函数作为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))

关于scheme - 如何使用 biwascheme 进行增量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23940139/

相关文章:

function - Scheme中函数的机制

lisp - 运行基于 SICP 模式匹配规则的替换代码

functional-programming - SICP - 阶乘的命令式与功能式实现

compilation - 我如何编译这个“鸡计划”代码?

pattern-matching - 可匹配中的列表到模式转换(鸡方案)

scheme - 在Scheme中将AND与apply函数一起使用

scheme - Scheme和Racket不同吗?如果是这样,怎么办?

scheme - 评估顺序,SICP 练习

lisp - SICP 练习 3.8 - 为什么程序有效? (我觉得是环境问题)

Scheme - 正确使用 cons 来创建列表