1
1
mirror of https://github.com/github/semantic.git synced 2024-12-20 21:31:48 +03:00
semantic/src/Info.hs

41 lines
1.1 KiB
Haskell
Raw Normal View History

{-# LANGUAGE DataKinds, FlexibleContexts, GeneralizedNewtypeDeriving #-}
2016-03-31 00:12:39 +03:00
module Info where
2016-03-31 00:26:52 +03:00
import Data.Record
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 }
deriving (Eq, Num, Show)
2016-06-17 18:22:22 +03:00
newtype Cost = Cost { unCost :: Integer }
deriving (Eq, Num, Show)
2016-06-17 18:22:22 +03:00
type InfoFields = '[ Range, Category, Size, Cost ]
type Info = Record InfoFields
characterRange :: HasField fields Range => Record fields -> Range
characterRange = getField
setCharacterRange :: HasField fields Range => Record fields -> Range -> Record fields
setCharacterRange = setField
2016-06-17 17:29:24 +03:00
category :: HasField fields Category => Record fields -> Category
category = getField
setCategory :: HasField fields Category => Record fields -> Category -> Record fields
setCategory = setField
2016-06-17 17:29:24 +03:00
size :: HasField fields Size => Record fields -> Size
size = getField
setSize :: HasField fields Size => Record fields -> Size -> Record fields
setSize = setField
2016-06-17 17:29:24 +03:00
cost :: HasField fields Cost => Record fields -> Cost
cost = getField
setCost :: HasField fields Cost => Record fields -> Cost -> Record fields
setCost = setField