logo
/
関数型プログラミングの何が嬉しいのか
  1. 関数のみを使ってプログラムをしたい
    →なぜ?
  2. 手続き型では関数の順序(値の状態)が保証されない
    →良い例がほしい
  3. 関数を合成すれば順序(値の状態が保証される
    main = f(g(x, y))
  4. 関数は失敗の可能性(副作用(プログラミング)(ほしい値が取得されないなど))を持っている
 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
  1. 閉じ込めた型は、合成関数をつくる際に不都合が出る
    main = f(g(x, y))fMaybe Realを受け取るようにはなっていない