From d8bb807e89fbb193b373be111217813d5a4222e9 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Sat, 7 May 2011 13:16:01 -0400 Subject: [PATCH] Catch out-of-bounds calls to value_at. --- src/FunctionValues.hs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/FunctionValues.hs b/src/FunctionValues.hs index 9fd3c78..e8bdcb8 100644 --- a/src/FunctionValues.hs +++ b/src/FunctionValues.hs @@ -74,8 +74,14 @@ eval f (Product x y) = (eval f x) * (eval f y) eval f (Quotient x y) = (eval f x) / (eval f y) value_at :: [[[Double]]] -> Int -> Int -> Int -> Double -value_at values i j k = - ((values !! k) !! j) !! i +value_at values i j k + | i < 0 = 0 + | j < 0 = 0 + | k < 0 = 0 + | length values <= k = 0 + | length (values !! k) <= j = 0 + | length ((values !! k) !! j) <= i = 0 + | otherwise = ((values !! k) !! j) !! i make_values :: [[[Double]]] -> Int -> Int -> Int -> FunctionValues make_values values i j k = -- 2.43.2