Concurrent Clean : CleanJ : StdChar

StdBool, StdRealも移植完了。
ただし、StdCharは、コンパイルは成功したものの、結果が合わない。
Javaの文字型とCharの文字型の内部形式が違うことに起因している可能性もあり、どのように扱うかを考慮中。

      • -

結局、何が原因かわかりました。
Cleanの内部では、Char型とInt型を同じものとして扱っているようです。たとえば、

'e' + 'f' - 'a'

	pushC 'f'
	pushC 'e'
	addI
	ItoC
	pushC 'a'
	push_b 1
	update_b 1 2
	update_b 0 1
	pop_b 1
	subI
	ItoC
	fillC_b 0 0
	pop_b 1

というように変換されているみたい。pushCはChar型の値をスタックに積む命令で、addIはInt型の値を足し合わせる命令です。
とりあえず、全てのChar型の値に関するスタック操作は、Int型の値にキャストして行うことにします。