紙媒体で知識や経験を管理すると無くなりがちなのでブログで管理することにしました.
      殆どの記事は自分自身のためだけに書いているため,他人に見せる前提の内容, 文章ではありません.
      また, ブログのコメント欄を解放していたらbotからの迷惑行為を受けたため現在コメント欄は解放しておりません.

【Haskell】 whereブロック内の関数

これまではwhere内は変数を定義してきたが, 関数も定義できる.

calcBmis :: [(Double, Double)] -> [Double]
calcBmis xs = [bmi w h | (w,h) <- xs]
    where bmi weight height = weight / height^2

これは入力は[(Double,Double)]型より, Double型のペアのリストである.
出力はDouble型のリストである.
関数calcBmisの出力部分で, [bmi w h | (w,h) <- xs]について, まず(w,h) <- xsで入力xsに対してパターンマッチングによりペアのそれぞれの値をw, hに渡す.
bmi w h により, wとhを引数とする関数bmiを呼ぶ.
そのbmiはwhere内に定義されている.