概要
(書きかけ)
いわゆる「関数型言語」と呼ばれる類の言語の設計手法、 オブジェクト指向言語でも使えるところは多い(というか、そもそも明確に分ける意味もあまりない)。
関数(function)中心の設計。
メソッドをオブジェクトとして扱う → デリゲート
デリゲートが有用な場面 → イベント駆動、高階関数、非同期処理
純粋な関数(pure function)、フィールド等を参照せず、同じ入力に対して常に同じ出力を返す関数。
などの説明を予定
(予定)
タイトル要検討
OOP で「クラスの付属品」になってたメソッドに再度焦点を
OOP と 関数型の mixed パラダイム
第一級関数
高階関数
ラムダ式
用途:
イベント駆動(コールバック)
処理の差し替え(IoC 制御の逆転)
非同期処理
データ処理、パイプライン化
インターフェイスに実装持ちたい → 実は後置きしたいだけ。静的メソッドを後置きできれば解決 → 拡張メソッド
↓こういう類の説明を入れる
http://csharptan.wordpress.com/2011/12/14/
[インターフェイス: どういうメンバーを持っているかという規約] → [静的メソッド: 規約に対して使えるアルゴリズム]
↓
[実装: 規約を満たす具象クラス]
インターフェイス: ユークリッド整域
アルゴリズム: ユークリッド互除法
実装: 整数、多項式
