Yet Another Haskell 3章 (5.1)
3.5.1 Let Bindings
let bindingに関して
今までの知識を使うと、2次方程式の根を求める関数rootsは次のように書ける。
roots a b c = ((-b + sqrt(b*b - 4*a*c)) / (2*a), (-b - sqrt(b*b - 4*a*c)) / (2*a))
let inを使うことで、関数内でのみ参照できるローカル変数を定義できる。
roots a b c = let det = sqrt(b*b - 4*a*c) in ((-b + det) / (2*a), (-b - det) / (2*a))
ローカル変数は複数定義できる。
roots a b c = let det = sqrt(b*b - 4*a*c) twice_a = 2*a in ((-b + det) / twice_a, (-b - det) / twice_a)
letの後は、インデントに注意。
roots a b c = let det = sqrt(b*b - 4*a*c) twice_a = 2*a in ((-b + det) / twice_a, (-b - det) / twice_a)
とするとエラーになる。