関数型プログラミングの基礎 - 高階関数 - リストの畳み込み、foldl、二項関数、初期値, 総乗
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)の UNIT1(関数型プログラミングの基礎)、LESSON 9(高階関数)、9.4(リストの畳み込み)、クイックチェック9-2の解答を求めてみる。
コード
sample2.hs
main :: IO ()
main = do
print $ product []
print $ product [1]
print $ product [1, 5]
print $ product [1, 5, 2]
print $ product [1, 5, 2, 4]
print $ product [1, 5, 2, 4, 3]
print $ myProduct []
print $ myProduct [1]
print $ myProduct [1, 5]
print $ myProduct [1, 5, 2]
print $ myProduct [1, 5, 2, 4]
print $ myProduct [1, 5, 2, 4, 3]
myProduct :: (Foldable t, Num a) => t a -> a
myProduct = foldl (*) 1
入出力結果(Terminal, Zsh)
% runghc sample2.hs
1
1
5
10
40
120
1
1
5
10
40
120
%