| 1 | {-# LANGUAGE InstanceSigs, DataKinds, KindSignatures, GADTs #-} |
|---|
| 2 | |
|---|
| 3 | data DayKind = Work | Rest |
|---|
| 4 | |
|---|
| 5 | data Day :: DayKind -> * where |
|---|
| 6 | Mon :: Day Work |
|---|
| 7 | Sat :: Day Rest |
|---|
| 8 | |
|---|
| 9 | instance Num (Day c) where |
|---|
| 10 | fromInteger :: Int -> Day p |
|---|
| 11 | fromInteger 1 = Mon |
|---|
| 12 | fromInteger 6 = Sat |
|---|