import SimplePrelude -- The type of an array containing elements of type `a`: type Array a = Int -> a -- Constructors of arrays: -- The empty array: emptyArray :: Array a emptyArray = \i -> error "Access to non-initialized index!" -- An array with an init value: initArray :: a -> Array a --initArray iv = \i -> iv initArray iv = const iv -- Put an element at an index into an array: putIndex :: Array a -> Int -> a -> Array a putIndex a i v = a' where a' j | j == i = v | otherwise = a j -- Get an element at an index position in an array: selector a[i] getIndex :: Array a -> Int -> a getIndex a i = a i zeroArray :: Array Int zeroArray = initArray 0 oneTwoArray :: Array Int oneTwoArray = putIndex (putIndex zeroArray 1 42) 2 99