top page > computer > haskell > web_lecture > for_programmer > product.html
更新日:
文責: 重城良国

リストの要素の総積: 関数product

動作

関数productはリストの値をかけあわせる。

% ghci
Prelude> product [3, 18, 9]
486

関数myProductはInteger型の値のリストをとりInteger型の値を返す。

myProduct :: [Integer] -> Integer

再帰部

リストに値xを追加すると結果の値はx倍になる。

myProduct (x : xs) = x * myProduct xs

基底部

空リストを基底とする。myProduct [3, 14, 9]はmyProduct [14, 9]の3倍だ。myProduct [14, 9]はmyProduct [9]の14倍だ。同様にmyProduct [9]がmyProduct []の9倍となれば良い。myProduct []の値を1とする。

myProduct [] = 1

出来上がり

product.hs

myProduct :: [Integer] -> Integer
myProduct [] = 1
myProduct (x : xs) = x * myProduct xs

関数mySumとの比較

mySum :: [Integer] -> Integer
mySum [] = 0
mySum (x : xs) = x + mySum xs

空リストのときの値がmySumでは0でありmyProductでは1だ。先頭の要素と再帰的な部分とをつなぐ演算子がmySumでは(+)でありmyProductでは(*)である。

まとめ

リストを引数に取る再帰関数の作りかたのひとつを学んだ。

課題

  1. リストの要素の最大値を返す関数myMaximumを作成せよ

「リストの要素の総和」へもどる 「リストの長さ」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics