[F#] Either 型による return

2014年6月11日

 「値がないのを知らせるのが Option 型として、では何故値がなかったかを知らせるにはどうすればいい?」という問いに対して、「Haskell だと Either ってのがある」教えてもらったので、F# で真似てみました。

 まず Either 型を定義する。

type Either<'a,'b> = Right of 'a | Left of 'b;;

 Either 型を渡すと、以下の処理をする関数を作る。

  • 成功(=Right) の時は、Right で渡された値の和を計算し(= a + b)、文字列で戻す。
  • 失敗(=Left) の時は Left で渡された値に "Error " を付加して戻す。
let f x = match x with
          | Right (a:int,b:int) -> string(a+b)
          | Left (e:int) -> sprintf "Error %d" e
;;

 実行。

> f (Either.Right (100,200));;
val it : string = "300"

> f (Either.Left 101);;
val it : string = "Error 101"

 この方法だと 成功(Right)か失敗(Left)かの評価を、Either 型を受け取る側に強いることができますね。






タグ:
カテゴリー: F#, Program

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org