2016-06-17 18:25:45 +03:00
|
|
|
{-# LANGUAGE DataKinds, FlexibleContexts, GeneralizedNewtypeDeriving #-}
|
2016-03-31 00:12:39 +03:00
|
|
|
module Info where
|
2016-03-31 00:26:52 +03:00
|
|
|
|
2016-06-17 17:26:20 +03:00
|
|
|
import Data.Record
|
2016-05-26 19:58:04 +03:00
|
|
|
import Prologue
|
2016-03-31 00:26:52 +03:00
|
|
|
import Category
|
|
|
|
import Range
|
|
|
|
|
2016-06-17 18:22:22 +03:00
|
|
|
newtype Size = Size { unSize :: Integer }
|
2016-06-17 18:33:22 +03:00
|
|
|
deriving (Eq, Num, Show)
|
2016-06-17 18:22:22 +03:00
|
|
|
newtype Cost = Cost { unCost :: Integer }
|
2016-06-17 18:33:22 +03:00
|
|
|
deriving (Eq, Num, Show)
|
2016-06-17 17:26:20 +03:00
|
|
|
|
2016-06-17 18:22:22 +03:00
|
|
|
type InfoFields = '[ Range, Category, Size, Cost ]
|
2016-06-17 17:26:20 +03:00
|
|
|
|
2016-06-17 20:33:50 +03:00
|
|
|
type Info = Record InfoFields
|
2016-06-17 17:26:20 +03:00
|
|
|
|
2016-06-17 20:33:50 +03:00
|
|
|
characterRange :: HasField fields Range => Record fields -> Range
|
|
|
|
characterRange = getField
|
2016-06-17 17:26:20 +03:00
|
|
|
|
2016-06-17 21:07:21 +03:00
|
|
|
setCharacterRange :: HasField fields Range => Record fields -> Range -> Record fields
|
2016-06-17 20:33:50 +03:00
|
|
|
setCharacterRange = setField
|
2016-06-17 17:29:24 +03:00
|
|
|
|
2016-06-17 20:33:50 +03:00
|
|
|
category :: HasField fields Category => Record fields -> Category
|
|
|
|
category = getField
|
2016-06-17 17:26:20 +03:00
|
|
|
|
2016-06-17 21:07:21 +03:00
|
|
|
setCategory :: HasField fields Category => Record fields -> Category -> Record fields
|
2016-06-17 20:33:50 +03:00
|
|
|
setCategory = setField
|
2016-06-17 17:29:24 +03:00
|
|
|
|
2016-06-17 20:33:50 +03:00
|
|
|
size :: HasField fields Size => Record fields -> Size
|
|
|
|
size = getField
|
2016-06-17 17:26:20 +03:00
|
|
|
|
2016-06-17 21:07:21 +03:00
|
|
|
setSize :: HasField fields Size => Record fields -> Size -> Record fields
|
2016-06-17 20:33:50 +03:00
|
|
|
setSize = setField
|
2016-06-17 17:29:24 +03:00
|
|
|
|
2016-06-17 20:33:50 +03:00
|
|
|
cost :: HasField fields Cost => Record fields -> Cost
|
|
|
|
cost = getField
|
2016-06-17 17:26:20 +03:00
|
|
|
|
2016-06-17 21:07:21 +03:00
|
|
|
setCost :: HasField fields Cost => Record fields -> Cost -> Record fields
|
2016-06-17 20:33:50 +03:00
|
|
|
setCost = setField
|