-- !!! Check the Read instance for Array -- [Not strictly a 'deriving' issue] module Main( main ) where import Data.Array bds :: ((Int,Int),(Int,Int)) bds = ((1,4),(2,5)) type MyArr = Array (Int,Int) Int a :: MyArr a = array bds [ ((i,j), i+j) | (i,j) <- range bds ] main = do { putStrLn (show a) ; let { b :: MyArr ; b = read (show a) } ; putStrLn (show b) }