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[]

これらは、遅延の文脈でのみプレースホルダを用い、正格の文脈ではそのまま扱います。
また、プレースホルダを配列にするかを悩んでいましたが、タプルをオブジェクト配列にしたので、それとの区別をつけやすいように、プレースホルダは専用のクラスを用意することにします。