{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE FunctionalDependencies #-} module Stratosphere.Property where import Data.Kind (Type) import GHC.TypeLits (Symbol) class Property (propertyName :: Symbol) (record :: Type) where type PropertyType propertyName record :: Type set :: PropertyType propertyName record -> record -> record