Scheme/Racket有枚举操作吗?

6

Scheme/Racket是否有类似于Haskell中[a..b]符号的枚举符号呢?
在Haskell中,[1..5]计算结果为列表[1,2,3,4,5]。


2
Lisp的卖点在于其极简的语法。因此,与其使用像[a..b]这样的特殊符号,它使用函数来完成相同的事情。 - Dan Burton
2个回答

11
  1. (for/list ([i (in-range 1 6)]) i)

  2. (sequence->list (in-range 1 6))

  3. (require srfi/1) (iota 5 1)

1. 使用for循环生成一个列表,其中包含从1到5的元素。
2. 将1到5的序列转换成列表。
3. 要使用SRFI-1库中的iota函数生成一个从1开始的长度为5的列表。

4
  1. (for/list ([i 5]) (+ 1 i))

    结果:(2 3 4 5 6)

  2. (build-list 5 add1)

    结果:(1 2 3 4 5)

此外,(in-range 1 6)(一个序列)本身在许多情况下都很有用。


要获得最像 Haskell 的行为,请使用 Lazy Racket 的 build-list,它是(惊喜)懒惰的。 - Dan Burton

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