-
Marcin 'Qrczak' Kowalczyk authored
Promote (//) from a function to IArray method with an inefficient default definition. This completely compatible change allows efficient implementations of (//) for particular types. Explicitly define efficient (//) for Array and UArray. Use unsafeFreeze* instead of freeze* in (//), accum and accumArray for Array and IArray. Remove showList in instance Show Array (the default definition does the job). Add Eq, Ord and Show instances for UArray. (Would be simpler if types in instance contexts were not required to be type variables. I didn't use -fallow-undecidable-instances but defined instances for individual element types separately.) Add unsafe{Freeze,Thaw}/{STArray,IOArray,IOUArray} rules. Fix thaw/IOUArray rule (nobody uses IOUArrays in the ST monad!).
9bff24a3