> IOArray など用の (!) を実装するにはどうしたらいいでしょうか?

IOArray 用に (!!!)を作り、それが Array の(!)相当ということですか?
だとすると、(!!!) の型は多分

(!!!) :: IOArray i e  -> i -> e

を想定してますよね。これってどういう意味の関数でしょうか?
ちょっと私には想像できていません。それがわかるとなんとかなるような
気がしますが。。。

> Hugs の Array のソースをたどると primitive 、GHC の場合にも
> 似たような怪しげなソースにたどり着いてこれをどう IOArray 用
> に改造するべきか検討がつきません。

Array の意味は Haskell 98 Language and Libraries Revised Report の
Array ライブラリの項で示されています。しかし、この仕様は意味は定めて
いますが、実装は定めていません。実際、その実装は Hugs では primitive、
GHC では抽象型で、共に通常の Haskell レベルでの実装ではありません。
(!) は Array の実装依存なので、これまた、通常の Haskell レベルでの
実装を与えることはできないと思います。できたとしても、それは処理系依存
のコードです。というわけで、「あやしげ」なのは当然です。

(!) は、そもそも、対象となる型の実装依存なので、これを元に(!!!)を
実装するというのも筋がちがうように思いますがどうでしょう。
IOArray は Array ではないので。

--nobsun

--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/