関数型プログラミングの基礎 高階関数 リストのフィルタリング
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT1(関数型プログラミングの基礎)、LESSON9(高階関数)、9.3(リストのフィルタリング)のクイックチェック 9-1の解答を求めてみる。
コード
remove :: (a -> Bool) -> [a] -> [a]
remove _ [] = []
remove f (x : xs) =
if f x
then remove f xs
else x : remove f xs
nums :: [Integer]
nums = [-5 .. 5]
main :: IO ()
main = do
print nums
print $ remove even nums
print $ remove odd nums
入出力結果(Terminal, Zsh)
% runghc sample01.hs
[-5,-4,-3,-2,-1,0,1,2,3,4,5]
[-5,-3,-1,1,3,5]
[-4,-2,0,2,4]
%