shithub: MicroHs

ref: 2ac265704e87b49196c3fb6cd84d63f15f06ba05
dir: /lib/Data/Record.hs/

View raw version
module Data.Record(module Data.Record) where
import Primitives
import Data.Function
import Data.Proxy
import Data.Tuple

type  HasField :: forall (k::Kind) . k -> Type -> Type -> Constraint
class HasField x r a | x r -> a where
  hasField :: Proxy x -> r -> (a, a -> r)

getField :: forall x r a . HasField x r a => Proxy x -> r -> a
getField p = fst . hasField p

setField :: forall x r a . HasField x r a => Proxy x -> r -> a -> r
setField p = snd . hasField p