- | i < 0 = Nothing
- | j < 0 = Nothing
- | k < 0 = Nothing
- | k >= length (cubes g) = Nothing
- | j >= length ((cubes g) !! k) = Nothing
- | i >= length (((cubes g) !! k) !! j) = Nothing
- | otherwise = Just $ (((cubes g) !! k) !! j) !! i
-
+ | i < 0 = error "i < 0 in cube_at"
+ | j < 0 = error "j < 0 in cube_at"
+ | k < 0 = error "k < 0 in cube_at"
+ | otherwise =
+ let zsize = length (cubes g) in
+ if k >= zsize then
+ error "k >= xsize in cube_at"
+ else
+ let ysize = length ((cubes g) !! k) in
+ if j >= ysize then
+ error "j >= ysize in cube_at"
+ else
+ let xsize = length (((cubes g) !! k) !! j) in
+ if i >= xsize then
+ error "i >= xsize in cube_at"
+ else
+ (((cubes g) !! k) !! j) !! i