0️⃣
[Haskell] takeを実装する
すごいHaskellたのしく学ぼう!を読んでいるので、アウトプットします。
あくまで初学者のアウトプットなので、あまりイケてない記述があるかもしれません。
第4章で再帰関数を実装する問題があるので、自分なりの回答を載せます。
take
take関数は、リストから指定された数の要素を取り出す関数です。
take関数は2つの引数を取ります:最初の引数は取り出す要素の数、二番目の引数は対象となるリストです。
take (2) [1,2,3,4] -- [1,2]
take 5 [1, 2] -- [1, 2]
take 0 [1, 2, 3, 4, 5] -- []
take (-3) [1, 2, 3, 4, 5] -- []
本の回答
take' :: Int -> [a] -> [a]
take' n _
| n <= 0 = []
take' _ [] = []
take' n (x : xs) = x : take' (n - 1) xs
自分の回答
take' :: Int -> [a] -> [a]
take' _ [] = []
take' n (x : xs)
| n <= 0 = []
| otherwise = x : take' (n - 1) xs
多分問題なく動くはず。早く記法に慣れたい...
Discussion