Memo
About Haskell(A Short Introduction to Haskell)
の和訳です。興味ある人は是非読んでみて下さい。
とりとめなく、忘れがちなことのメモ
- Java reflection
- Java でクラスに指定されたメソッドがあるかどうかを調べたりできる仕組み。調べるだけでなく呼出しなどもできる。
- Java Generics
- C++のテンプレートみたいなもの。Vector
strings = new Vector (); という感じで。多相型。これができたらSoft Typingがもっと楽しくできたのに。 Java2 SDK 1.5でこの機能が入る? - call-by-value
- 関数の引数に値が渡される。schemeでもMLでもデフォルトでこれ。
- call-by-name
- 引数と同じ変数名のところを置き換える。同じ計算が何回も行われる可能性がある。
- call-by-need
- その値が本当に必要になったときに計算する。lambda計算ではこれが前提?1度計算した式を2回計算しないように値を覚えておく。
- Haskell
- 関数型プログラミング言語のひとつ。遅延評価(call-by-need)が特徴
- lambda計算
- 全ての式と値を"λ.x e"の形で表す。プログラミング言語に数学的な意味を与えようとしたが、実用化には微妙に至らなかった。関数型言語の基礎となった。
- linear type
- 線形型。オブジェクトの使用回数を調べて、1度しか使わないとわかるオブジェクトにつけられる型。これを利用するとインライン展開や破壊的updateができる。
- ML
- Meta language。プログラミング言語のひとつ。静的に強く型付けされる。使えるようになるにはまず型の理解が必要となる。
- parametric polymorphism
- 関数の型に型変数を許したポリモーフィズム。MLの"function x -> x"など。
- poly morphism
- 多相性。同じ(名前の)関数で場合によっていろんなことができる。see also parametric polymorphism,ad hoc polymorphism
- soft typing
- schemeなど、動的に型がつけられる(オブジェクトが型情報を持つ)ような言語に型がつけられるようにできた型システム。int または boolean、というような型が特徴。
- subtyping
- 部分型。int < double など。型に包含関係にあるような型システム。関数適用の部分が逆になってて難しい。
- 関数型言語
- ML,Haskell,Schemeなどのプログラミング言語に代表されるような言語の分類。全ての部分式が値を持つのが特徴。