Data.OverloadedRecords
type family FieldType (l :: Symbol) (s :: *) :: *
class HasField l s a
type family UpdateType (l :: Symbol) (s :: *) (a :: *) :: *
class SetField l s b
data Setter s t b
set
type family FromArrow (a :: *) :: Bool where ...
class IsFieldAccessor l x y z