diff options
Diffstat (limited to 'src/Data/Classes.hs')
-rw-r--r-- | src/Data/Classes.hs | 17 |
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 |