-
関数のみを使ってプログラムをしたい
→なぜ?
-
手続き型では関数の順序(値の状態)が保証されない
→良い例がほしい
-
関数を合成すれば順序(値の状態が保証される
main = f(g(x, y))
-
関数は失敗の可能性(副作用(プログラミング)(ほしい値が取得されないなど))を持っている
f = (a,b) => a/b
f(1,0) // divide 0
-
成功と失敗を返せば良いのではないか
-
type f = Real , Real => Real | Null // 実数またはNullを返す関数
-
実行側でifのフローが必要となる
-
戻り値のための型をつくり、そこに値を閉じ込めれば常に値は1つになる
-
type f = Real , Real => Maybe Real
-
閉じ込めた型は、合成関数をつくる際に不都合が出る
main = f(g(x, y))
でf
はMaybe Real
を受け取るようにはなっていない