2012/01/21

「なぜ関数プログラミングはなぜ重要か」のメモ

この文は次のサイトの内容(論文の日本語訳)で、気になった部分を箇条書きしたもの。 要約でさえない。素晴らしい内容が書いてある文書の宣伝だよ。

1. イントロダクション

関数プログラミングの"よく言われる"利点
  • 代入文がない
  • 副作用がない(変数の値は変更されない)
  • 実行順を来にしなくて良い(式の値は変更されないから、いつ評価しても同じはず) 参照透明性。

2. 構造化プログラミングとの類似

1.で述べたことは「〜でない」を言っただけ。積極的な利点として、
  • モジュール化設計への利点 (構造化プログラミングでは、ブロックの出入り口はただ1つ、だとかである。)
関数型言語では別の方法でモジュール化可能になる。

3. 関数の貼りあわせ

  • 再帰的なパターンの例 : reduce
  • リストの扱い : map
  • ラベル付き順序ツリー : redtree
"新しいデータ型を定義したときにその型を処理する高階関数を書くべきである。 そうすれば、その データ型の取り扱いが簡単になり、その表現の詳細に関する知識を局所化でき る。従来のプログラミング言語での類推として一番いいのは、望みの時にはいつでも、新しい制御構造で拡張できるという拡張可能な言語である。 "

4. プログラムの貼り合せ

  • g . f の実装がスゴイ!!!gを読みつつ、必要になったら必要なだけfを評価する。 (遅延評価)

5. 人工知能からの例

  • 高階関数と遅延評価を用いて、ツリーの評価をする例

0 件のコメント:

コメントを投稿