drkcore

2009/12/25 21:22:29

HaskellのsplitAt

HaskellのsplitAtはなんでタプルを返すんだろうか?

Prelude> :t splitAt
splitAt :: Int -> [a] -> ([a], [a])
Prelude> splitAt 3 [1,2,3,4,5]
([1,2,3],[4,5])

pythonで同じようなのを書いてみる。

>>> def splitAt (n,xs): return [xs[:n],xs[n:]]
... 
>>> splitAt(3,[1,2,3,4,5])
[[1, 2, 3], [4, 5]]
>>> def splitAt (n,xs): return (xs[:n],xs[n:])
... 
>>> splitAt(3,[1,2,3,4,5])
([1, 2, 3], [4, 5])

なんというか[[1, 2, 3], [4, 5]]のほうが見た目よろしい気がするのです。

追記09.12.25

Comments