9️⃣

[Haskell] replicateを実装する

2024/01/19に公開

すごいHaskellたのしく学ぼう!を読んでいるので、アウトプットします。

あくまで初学者のアウトプットなので、あまりイケてない記述があるかもしれません。

第4章で再帰関数を実装する問題があるので、自分なりの回答を載せます。

replicate

replicate関数は、指定された回数だけ同じ値を繰り返してリストを生成する標準関数です。2つの引数を取り、繰り返し回数(整数)と繰り返す値です。

replicate 3 10 -- [10, 10, 10]

replicate 5 'a' -- "aaaaa"

replicate 4 True -- [True, True, True, True]

replicate (-1) 5 -- []

本の回答

replicate' :: Int -> a -> [a]
replicate' n x
  | n <= 0 = []
  | otherwise = x : replicate' (n - 1) x

自分の回答

replicate' :: Int -> a -> [a]
replicate' 0 _ = []
replicate' 1 x = [x]
replicate' n x = x : replicate' (n - 1) x

自分の回答は第一引数がマイナスの場合が考慮されていなかった...
まあ、再帰的な記述はできていたので良しとしよう()

Discussion