計算機科学のブログ

関数型プログラミングの基礎 - 高階関数 - リストの畳み込み、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
%