在Haskell中,我可以这样做来处理无限列表。
takeWhile (<1000) [1 ..]
CoffeeScript中有没有办法解决这个问题?
答案 0 :(得分:7)
StreamJS可以在javascript中创建“无限”列表。
使用它(粗略)coffeescript port:
# Stream.range() creates a list from 1...Infinity
numbers = Stream.range().until (x) -> x > 1000
答案 1 :(得分:3)
不像原始版本那样构建,但它们可以像大多数其他语言一样被黑客入侵。至少有人在CoffeeScript中玩弄它;见https://github.com/swannodette/fun.coffee/blob/master/src/fun.coffee。对于看似不那么“入侵”的解决方案,您可能希望阅读CPS并支持正确的尾调用,请参阅http://blog.mozilla.com/dherman/2011/01/30/proper-tail-calls-in-harmony/。