与Haskell中where子句相当的Scheme语法

4

我正在学习Scheme,但是希望能够让自己重复的次数更少。

有没有一种方法可以在本地范围内为子表达式指定名称?

根据评论:

Haskell where从句

x = s * t 
  where s = 10
        t = 20

在这种情况下,x应该是200。
1个回答

9

使用let(或用于递归绑定的letrec),例如:

(define (f g) 
  (let ((x 1) (y (* g 2))) 
       (+ x y)))

谢谢,但遗憾的是,在 drscheme 的“初学者语言”子集中没有 let。不过,显然这是正确的答案。 - solinent
11
如果你了解 Haskell,最好不要使用 Drscheme 的“初学者语言”子集。Scheme 的整个语言已经很小了,比 Haskell 小得多。 - Nathan Shively-Sanders

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接