【问题标题】:Does Scheme/Racket have an enumeration operation?Scheme/Racket 有枚举操作吗?
【发布时间】:2011-10-31 22:27:53
【问题描述】:

Scheme/Racket 是否有与 Haskell 中的 [a..b] 表示法等效的枚举表示法?
在 Haskell 中,[1..5] 的计算结果为列表 [1,2,3,4,5]。

【问题讨论】:

  • Lisp 的卖点是最小的语法。所以不是像[a..b]这样的特殊符号,而是有一些函数可以完成同样的事情。

标签: haskell lisp scheme enumeration racket


【解决方案1】:
  1. (for/list ([i (in-range 1 6)]) i)

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

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

【讨论】:

    【解决方案2】:
    1. (for/list ([i 5]) (+ 1 i))

    2. (build-list 5 add1)

    此外,(in-range 1 6)(即sequence)本身在许多情况下都很有用。

    【讨论】:

    • 要获得最像 Haskell 的行为,请使用 Lazy Racket 的 build-list,这(惊喜)是惰性的。
    猜你喜欢
    • 2011-07-10
    • 1970-01-01
    • 2012-10-24
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多