summaryrefslogtreecommitdiff
path: root/Haskell-book/06/src/Main.purs
blob: 6f60ab2c6900a312d7c54efc5204369c2a9169a1 (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
module Main where

import Prelude
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (CONSOLE, log)

data DayOfWeek =
    Mon | Tue | Weds | Thu | Fri | Sat | Sun

data Date =
    Date DayOfWeek Int

instance eqDayOfWeek :: Eq DayOfWeek where
    eq Mon Mon = true
    eq Tue Tue = true
    eq Weds Weds = true
    eq Thu Thu = true
    eq Fri Fri = true
    eq Sat Sat = true
    eq Sun Sun = true
    eq _ _ = false

instance eqDate :: Eq Date where
    eq (Date weekday dayOfMonth)
       (Date weekday' dayOfMonth') =
        weekday == weekday' && dayOfMonth == dayOfMonth'

main :: forall e. Eff (console :: CONSOLE | e) Unit
main = do
  log "Hello sailor!"