aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Data/Classes.hs
blob: 328a8b0a47f93cb6277e87a03e63f93ea3083b19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
{-# LANGUAGE TupleSections #-}

module Data.Classes ( zeroScores
                    , testScores
                    , lookupSariulClass) where

import Types.Classes
import Types.Scores

-- sariulGrade5 = GradeFive 1.5
sariulGrade5 = GradeFive 1
sariulGrade6 = GradeSix  1

sariulClasses :: [Class]
sariulClasses =
    [ Class sariulGrade5     1    25
    , Class sariulGrade5     2    24
    , Class sariulGrade5     3    25
    , Class sariulGrade6     1    23
    , Class sariulGrade6     2    23
    , Class sariulGrade6     3    23
    , Class sariulGrade6     4    21 ]

zeroScores :: ScoresList
zeroScores = foldr ((:) . (,emptyScore)) [] sariulClasses

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

--- test data

testScores :: ScoresList
testScores = zip sariulClasses
             [ Score 408 7
             , Score 455 7
             , Score 383 91
             , Score 256 56
             , Score 277 101
             , Score 308 43
             , Score 303 2]