我最近一直在使用Python,并且一直在想是否有任何现代的静态类型语言,如语法支持
def gen():
for i in range(10):
yield i << 100
for big_num in gen():
print(big_num)
我认为Scala有他们,但似乎情况并非如此。
答案 0 :(得分:1)
Haskell有conduits,它更通用,但肯定能够实现与Python的生成器非常相似的行为:
import Control.Monad
import Data.Bits
import Data.Conduit
import qualified Data.Conduit.List as CL
gen :: (Monad m) => Source m Integer
gen = forM_ [0..9] $ \i ->
yield (i `shiftL` 100)
main = gen $$ CL.mapM_ print