>>957
UArray の構築途中に自己参照すると無限ループに陥ります。

a :: UArray Int Int
a = listArray (0, 1) [0, a ! 0]

理由は・・・ base と array のパッケージをDLしてソースを見てみましたが、
決定的なこと(単純な自己参照になっている証拠)は分かりませんでした。

おそらく、非ボックスなので配列全体が確定しないと参照できないから、
という辺りだろうとは思いますが。