- | 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
-
+ | i < 0 = error "i < 0 in cube_at"
+ | i >= xsize = error "i >= xsize in cube_at"
+ | j < 0 = error "j < 0 in cube_at"
+ | j >= ysize = error "j >= ysize in cube_at"
+ | k < 0 = error "k < 0 in cube_at"
+ | k >= zsize = error "k >= zsize in cube_at"
+ | otherwise = (cubes g) ! (i,j,k)
+ where
+ fvs = function_values g
+ (xsize, ysize, zsize) = dims fvs