Concurrent Clean : Re: 型クラスと非ボックス化配列

[id:lethevert:20070821:p1], [id:lethevert:20070821:p4], [id:lethevert:20070823:p4]
などで悩んでいた問題の解決策が見付かった。
例として、% (slice)を挙げると、次のように書くことで、これまでの問題を全て解決することができる。実は、似たようなテクニックはすでに標準ライブラリの正格リストの操作関数の定義で使われていて、これは、それを応用したものだ。

instance % {a}
instance % {!a}
instance % {#a} | sliceUA {#} a
  special a = Int; a = Char; a = Real; a = Bool

class sliceUA q a :: !(q a) !(!Int,!Int) -> (q a)
instance sliceUA {#} Char
instance sliceUA {#} a | Array {#} a