小编kfe*_*fem的帖子

球拍流

任何人都可以帮助我更好地了解如何编写流吗?

我理解一个流是一个无限的值序列,我学会编程它们的方式是将它们表示为一个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但我对如何构造它有点困惑

scheme racket

8
推荐指数
3
解决办法
6245
查看次数

在球拍中循环?

我熟悉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)

scheme racket

3
推荐指数
1
解决办法
6236
查看次数

racket 中 `assoc` 语法的澄清

我正在尝试assoc在球拍中使用来创建备忘录表,并希望将有序对 (x,y) 与一个值相关联,但我对语法有点不清楚。

例如我有:

[f (lambda (x y)
               (let ([ans (assoc [x y] memo)])
Run Code Online (Sandbox Code Playgroud)

但这是不正确的。

scheme racket

2
推荐指数
1
解决办法
4765
查看次数

标签 统计

racket ×3

scheme ×3