紙媒体で管理するとなくなりがちなのでブログで進捗などを管理することにしました
※殆どの記事は自分自身のためだけにかいています.他人に見せられるレベルには至っていません...

【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内に定義されている.