Haskell - 型によるプログラミング - 合成によるデザイン:SemigroupとMonoid - 合成可能性:関数を組み合わせる)
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)の UNIT3(型によるプログラミング)、LESSON 17(合成によるデザイン:SemigroupとMonoid)、17.1(合成可能性:関数を組み合わせる)、クイクックチェック 17-1の解答を求めてみる。
コード
sample1.hs
main :: IO ()
main = do
mapM_ (\xs -> print $ myAny even xs)
[[1, 3 .. 11],
[2, 4 .. 10],
[1],
[2],
[1, 2, 4, 6],
[2, 4, 6, 5],
[1, 3, 6, 5]]
myAny :: (a -> Bool) -> [a] -> Bool
myAny testFunc = (foldr (||) False) . (map testFunc)
入出力結果(Terminal, Zsh)
% runghc sample1.hs
False
True
False
True
True
True
True
%