Expression Problemまとめ

様々なプログラミング言語のプログラミングパラダイムについての長所と短所を議論する際に用いられる用語.

型変換や条件分岐を使用せずに、既存のデータ型に機能を追加するにはどうすれば良いのか、という問題.

言語別

📝多重ディスパッチ

2個のオブジェクトから、それに対応する実際の手続きが実行時に決まる、というもの.

  • 普通のobj.callはシングルディスパッチ.
  • 実行時のオーバヘッドとのトレードオフ(Javaのオーバーロード).

📝構造化パターンマッチ(Structural Pattern Matching)

パターンマッチ(pattern matching).

📝Elixerはパターンマッチを言語で強力にサポートしているため有名.

overlapping pattern: 重複パターン

ボリモーフィズムによってパターンマッチをする方法.

ref. Meaning of overlapping pattern in Haskell - Stack Overflow

数学的帰納法によって, 定義される関数.

last :: [a] -> a
last [x] = x
last (_ : xs) = last xs

if文は手続き的でパターンマッチは宣言的

パターンマッチはif文やcase文で比較すれば書けるものの, この記法が特に関数型言語のコミュニティで人気なのは, 宣言的なシンタックスだからだと思う(逆にifのようなフロー制御は命令形なので嫌われる). 当たり前のようにif文のかわりにパターンマッチを多用すれば納得.

see more

Topics

スパゲッティコード

スパゲッティみたなコード. goto文.

🔖ウンコード

うんこみたいなコード.

🔗References