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]]のほうが見た目よろしい気がするのです。