0️⃣

[Haskell] takeを実装する

2024/01/20に公開

すごい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