『追加のプリミティブ: 部分適用』の続きだ。前回までで、論理計算もできるように拡張されたが、まだ条件分岐がない。『条件分岐: パターンマッチ2』では、条件分岐の機能が追加される。また、入れ子になったパターンマッチの例の提示となっている。
if 文は関数の primitives テーブルに追加されるのではなく直接 eval 関数として定義される。 eval (List [Atom "if", pred, conseq, alt]) = do result <- eval pred case result of Bool False -> eval alt otherwise -> eval conseq プログラムの内容は単純だ、まず eval の引き数が if 文の形式のリストかどうかをパターンマッチで判断する。つぎに、pred を評価し、その値が Bool False の時は、alt(ernative) を評価し、そうでないときは conseq(uence) を評価するだけだ。真偽の条件分岐に if 文を使わず、パターンマッチで行なっているので、入れ子になったパターンマッチになっている。 条件分岐をパターンマッチで行うと if 文を使うより可読性が高いように思うのは管理人だけだろうか。
by tnomura9
| 2011-12-16 12:34
| Haskell
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||