packages feed

generic-labels-0.1.0.1: src/Data/Generic/Labels.hs-boot

{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}

module Data.Generic.Labels where

--------------------------------------------------------------------------------

class UncheckedAdapt args opt all where
   uncheckedAdapt :: args -> opt -> all
class UncheckedAdapt small big big
   => UncheckedInject  small big where
   uncheckedInject :: small -> big -> big
class UncheckedAdapt big big small
  => UncheckedProject big small where
   uncheckedProject :: big -> small

class ( UncheckedAdapt args opt all )
   => Adapt args opt all where
   adapt :: args -> opt -> all
class ( UncheckedInject small big )
   => Inject small big where
   inject :: small -> big -> big
class ( UncheckedProject big small )
   => Project big small where
   project :: big -> small