{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_HADDOCK not-home #-}
module Optics.Internal.Magic where
class Dysfunctional field k s t a b | field s -> k t a b
                                    , field t -> k s a b
instance
  ( TypeInferenceLoop
    "Type inference for the local binding failed. Write the type"
    "signature yourself or disable monomorphism restriction with"
    "NoMonomorphismRestriction LANGUAGE pragma so GHC infers it."
    field k s t a b
  ) => Dysfunctional field k s t a b
class TypeInferenceLoop msg1 msg2 msg3 field k s t a b | field s -> k t a b
                                                       , field t -> k s a b
instance
  ( TypeInferenceLoop msg1 msg2 msg3 field k s t a b
  ) => TypeInferenceLoop msg1 msg2 msg3 field k s t a b