aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Data/Classes.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data/Classes.hs')
-rw-r--r--src/Data/Classes.hs17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/Data/Classes.hs b/src/Data/Classes.hs
index 1e9df43..b7386d6 100644
--- a/src/Data/Classes.hs
+++ b/src/Data/Classes.hs
@@ -22,9 +22,14 @@ sariulClasses =
zeroScores :: ScoresList
zeroScores = foldr ((:) . (,emptyScore)) [] sariulClasses
-lookupSariulClass :: Int -> Int -> Class
-lookupSariulClass grade theClass = (head . filter choose) sariulClasses
- where
- choose (Class g n _) = theClass == n && process grade == g
- process 5 = sariulGrade5
- process 6 = sariulGrade6
+lookupSariulClass :: Int -> Int -> Maybe Class
+lookupSariulClass grade theClass = do
+ grade' <- case grade of
+ 5 -> Just sariulGrade5
+ 6 -> Just sariulGrade6
+ _ -> Nothing
+ let choose (Class g n _) = theClass == n && grade' == g
+ classes = filter choose sariulClasses
+ case classes of
+ [] -> Nothing
+ (x:xs) -> Just x