import SimplePrelude -- The type of an array: type Array a = Int -> a -- Constructors of arrays: emptyArray :: Array a emptyArray i = error ("Access to non-initialized index ") initArray :: a -> Array a initArray c = const c putIndex :: Array a -> Int -> a -> Array a putIndex a i v = a' where a' j | j == i = v | otherwise = a j -- Selector a[i]: getIndex :: Array a -> Int -> a getIndex a i = a i hw = putIndex (putIndex emptyArray 1 "World") 0 "Hello" hwe = putIndex (putIndex (initArray "") 1 "World") 0 "Hello"