プログラミング勉強ログ

プログラミングの勉強記録

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)

とするとエラーになる。