定義。
even1 = [2,4..] even2 = filter (\x -> x `mod` 2 == 0) [1..] even3 = filter (\x -> x `mod` 2 /= 1) [1..] even4 = zipWith (+) [1..] [1..] even5 = map (\x -> x * 2) [1..] even6 = 2:(map (2+) even6) even7 = map (\x -> sum $ replicate x 2) [1..] even8 = scanl (\x y -> x + y) 2 $ repeat 2 even9 = scanl1 (\x y -> x + y) $ repeat 2 even10 = map (\x -> sum $ take x $ repeat 2) [1..] even11 = map (\x -> length $ replicate (x*2) "Haskell") [1..] even12 = iterate (2+) 2
結果。
*Main> take 20 $ even1 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] *Main> take 20 $ even2 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] *Main> take 20 $ even3 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] *Main> take 20 $ even4 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] *Main> take 20 $ even5 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] *Main> take 20 $ even6 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] *Main> take 20 $ even7 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] *Main> take 20 $ even8 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] *Main> take 20 $ even9 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] *Main> take 20 $ even10 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] *Main> take 20 $ even11 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40] *Main> take 20 $ even12 [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40]