Concurrent Clean : CleanJ : 代数データ型、プレースホルダ、プリミティブ
ここ最近考えていたことの結論。
[id:lethevert:20060528:p6], [id:lethevert:20060528:p3], [id:lethevert:20060528:p4]
Cleanの一般的なデータは、Javaの特定のクラスのオブジェクトで表現します。このオブジェクトが項書き換えにおけるプレースホルダにもなります。
プレースホルダのために効率が悪くなるケースは、特殊なプリミティブの場合だけです。特殊なプリミティブとは、次のものです。
- タプル : Object[]
- 整数 : Integer
- 実数 : Double
- 文字 : Character
- 真偽値 : Boolean
- 非ボックス化整数配列 : int[]
- 非ボックス化実数配列 : double[]
- 非ボックス化文字配列 : String
- 非ボックス化真偽値配列 : boolean[]
これらは、遅延の文脈でのみプレースホルダを用い、正格の文脈ではそのまま扱います。
また、プレースホルダを配列にするかを悩んでいましたが、タプルをオブジェクト配列にしたので、それとの区別をつけやすいように、プレースホルダは専用のクラスを用意することにします。