任何人都可以帮助我更好地了解如何编写流吗?
我理解一个流是一个无限的值序列,我学会编程它们的方式是将它们表示为一个thunk,当被调用时产生一对(1)序列中的第一个元素和(2)代表一个thunk第二个无限元素的流
例如:
(define powers-of-two
(letrec ([f (lambda (x) (cons x (lambda () (f (* x 2)))))])
(lambda () (f 2))))
Run Code Online (Sandbox Code Playgroud)
我在这里理解它只是产生2的幂并且访问它们,例如调用(car (powers-of-two))将导致2并且调用(car ((cdr (powers-of-two))))将导致4
现在我正在尝试编写一个称为red-blue在字符串之间交替的流red,blue但我对如何构造它有点困惑
我熟悉while循环在其他语言中,但在这里我写了一个小函数,计算一个项的总和的衍生物,但它只做前两个我想知道是否有一种方法来改变这个以考虑更多2?
表达式,E表示为列表,因此2x + 2y + x^3表示为(+ (* 2 x) (* 2 y) (expt x 3))
请注意,我已经编写了用于计算指数的函数,但它是求和的一部分,它在前2之后停止
(define (make-sum v1 v2)
(list '+ v1 v2))
(define (diff-sum x E)
(make-sum (diff x (first-operator E)) (diff x (last-operator E))))
Run Code Online (Sandbox Code Playgroud) 我正在尝试assoc在球拍中使用来创建备忘录表,并希望将有序对 (x,y) 与一个值相关联,但我对语法有点不清楚。
例如我有:
[f (lambda (x y)
(let ([ans (assoc [x y] memo)])
Run Code Online (Sandbox Code Playgroud)
但这是不正确的。