タグ 直和型
人気順 5 users 50 users 100 users 500 users 1000 users直和型の代わりにユニオン型を持つ静的型付け関数型言語 Cotton
// 割る2をする関数の引数が偶数であることを型によって強制する例(実用性はない) data O // 数字の0を表すデータ型 data S(A) forall { A } // +1を表すデータ型 // 型エイリアス type Nat = O | S[Nat] // 非効率すぎる他倍長整数 type Even = O | S[Odd] type Odd = S[Even] // 偶数を引数にとって2で割った結果を... 続きを読む
代数的データ型をJavaで安全に使いこなす - BIGLOBE Style | BIGLOBEの「はたらく人」と「トガッた技術」
関数型プログラミング由来の代数的データ型は、とても便利な道具です。馴染みのないメンバーに向けて、実例を使いながら詳しく解説してみました。 代数的データ型とは 直積型 直和型 直和型の Java での実装 ベタに class で表現してみる 2つのクラスと interface で実現 安全に利用できるメソッドを提供する おわりに ... 続きを読む
Union Typesは直和型ではない | 雑記帳
TypeScript 1.4について、 TypeScript 1.4.1 変更点 – Qiita という記事が目に留まった。で、その中の 直和型(Union Types) という項目に引っかかりを感じた。 なぜ引っかかりを感じたかというと、TypeScriptに今回導入されたUnion Typesと、巷に言う直和型というのは、異なる概念であるからだ。 注意:以下の話は型理論の専門家でもないフツーの... 続きを読む
#1
例外によるエラー処理の問題点 副作用である 型チェックできない(Scalaは非チェック例外しかない) try catch構文はめんどくさい(catchしてまた例外を投げたり、DRYに書けないことも多い) 例外が起きてほしくない場所がある(Futureの中など) 直和型を使って解決したい 直和型とは 複数の型のうちどれかを表す型 たとえば 何もない or Aの型のデータがある → Option[A]... 続きを読む
Java の語彙で Maybe を説明してみる - ぐるぐる〜
java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリーを読んで。Maybe は値があるかないかを型で表すことができます!そう、直和型なんです!とか言われてもイミフだと思うのです(リンク先のエントリがそう説明してるわけではないですが)。Java の語彙で Maybe の説明をできたら嬉しい人もいるんじゃないかなぁ、とかなんとか。ただし、書いてたら結構長くなりました。時間がある人は... 続きを読む