Permalink
Cannot retrieve contributors at this time
128 lines (114 sloc)
6.56 KB
| {-# language PolyKinds #-} | |
| {-# language TypeFamilies #-} | |
| {-# language TypeOperators #-} | |
| {-# language KindSignatures #-} | |
| {-# language ConstraintKinds #-} | |
| {-# language DefaultSignatures #-} | |
| {-# language FlexibleInstances #-} | |
| {-# language ScopedTypeVariables #-} | |
| {-# language UndecidableInstances #-} | |
| {-# language MultiParamTypeClasses #-} | |
| {-# language FunctionalDependencies #-} | |
| import Control.Category | |
| import Control.Exception | |
| import Control.Exception.Lens (exception) | |
| import Control.Lens | |
| import Data.Constraint | |
| import Data.Proxy | |
| import Prelude hiding ((.),id) | |
| class (p ~ (->), Functor f) => LensConstraint p f | |
| class (LensConstraint p f, Applicative f) => TraversalConstraint p f | |
| class (p ~ (->), Settable f) => SetterConstraint p f | |
| class (TraversalConstraint p f, Contravariant f) => FoldConstraint p f | |
| class (LensConstraint p f, Contravariant f) => GetterConstraint p f | |
| class (Choice p, Applicative f) => PrismConstraint p f | |
| class (Profunctor p, Functor f) => IsoConstraint p f | |
| class EqualityConstraint (p :: * -> * -> *) (f :: * -> *) | |
| instance (p ~ (->), Functor f) => LensConstraint p f | |
| instance (LensConstraint p f, Applicative f) => TraversalConstraint p f | |
| instance (TraversalConstraint p f, Contravariant f) => FoldConstraint p f | |
| instance (p ~ (->), Settable f) => SetterConstraint p f | |
| instance (LensConstraint p f, Contravariant f) => GetterConstraint p f | |
| instance (Choice p, Applicative f) => PrismConstraint p f | |
| instance (Profunctor p, Functor f) => IsoConstraint p f | |
| instance EqualityConstraint p f | |
| class (s :: (* -> * -> *) -> (* -> *) -> Constraint) :< (t :: (* -> * -> *) -> (* -> *) -> Constraint) where | |
| impl :: t p f :- s p f | |
| instance SetterConstraint :< SetterConstraint where impl = id | |
| instance GetterConstraint :< GetterConstraint where impl = id | |
| instance GetterConstraint :< FoldConstraint where impl = Sub Dict | |
| instance FoldConstraint :< FoldConstraint where impl = id | |
| instance TraversalConstraint :< FoldConstraint where impl = Sub Dict | |
| instance TraversalConstraint :< SetterConstraint where impl = Sub Dict | |
| instance TraversalConstraint :< TraversalConstraint where impl = Sub Dict | |
| instance PrismConstraint :< FoldConstraint where impl = Sub Dict | |
| instance PrismConstraint :< SetterConstraint where impl = Sub Dict | |
| instance PrismConstraint :< TraversalConstraint where impl = Sub Dict | |
| instance PrismConstraint :< PrismConstraint where impl = id | |
| instance LensConstraint :< GetterConstraint where impl = Sub Dict | |
| instance LensConstraint :< FoldConstraint where impl = Sub Dict | |
| instance LensConstraint :< SetterConstraint where impl = Sub Dict | |
| instance LensConstraint :< TraversalConstraint where impl = Sub Dict | |
| instance LensConstraint :< LensConstraint where impl = id | |
| instance IsoConstraint :< GetterConstraint where impl = Sub Dict | |
| instance IsoConstraint :< FoldConstraint where impl = Sub Dict | |
| instance IsoConstraint :< SetterConstraint where impl = Sub Dict | |
| instance IsoConstraint :< PrismConstraint where impl = Sub Dict | |
| instance IsoConstraint :< TraversalConstraint where impl = Sub Dict | |
| instance IsoConstraint :< IsoConstraint where impl = id | |
| instance EqualityConstraint :< GetterConstraint where impl = Sub Dict | |
| instance EqualityConstraint :< FoldConstraint where impl = Sub Dict | |
| instance EqualityConstraint :< SetterConstraint where impl = Sub Dict | |
| instance EqualityConstraint :< IsoConstraint where impl = Sub Dict | |
| instance EqualityConstraint :< PrismConstraint where impl = Sub Dict | |
| instance EqualityConstraint :< LensConstraint where impl = Sub Dict | |
| instance EqualityConstraint :< TraversalConstraint where impl = Sub Dict | |
| instance EqualityConstraint :< EqualityConstraint where impl = id | |
| class (s :< u, t :< u) => Join s t u | s t -> u where | |
| instance Join GetterConstraint GetterConstraint GetterConstraint | |
| instance Join GetterConstraint FoldConstraint FoldConstraint | |
| instance Join FoldConstraint GetterConstraint FoldConstraint | |
| instance Join FoldConstraint FoldConstraint FoldConstraint | |
| instance Join TraversalConstraint TraversalConstraint TraversalConstraint | |
| instance Join TraversalConstraint FoldConstraint FoldConstraint | |
| instance Join FoldConstraint TraversalConstraint FoldConstraint | |
| instance Join SetterConstraint SetterConstraint SetterConstraint | |
| instance Join TraversalConstraint SetterConstraint SetterConstraint | |
| instance Join SetterConstraint TraversalConstraint SetterConstraint | |
| instance Join LensConstraint GetterConstraint GetterConstraint | |
| instance Join GetterConstraint LensConstraint GetterConstraint | |
| instance Join LensConstraint FoldConstraint FoldConstraint | |
| instance Join FoldConstraint LensConstraint FoldConstraint | |
| instance Join LensConstraint SetterConstraint SetterConstraint | |
| instance Join SetterConstraint LensConstraint SetterConstraint | |
| instance Join LensConstraint TraversalConstraint TraversalConstraint | |
| instance Join TraversalConstraint LensConstraint TraversalConstraint | |
| instance Join LensConstraint LensConstraint LensConstraint | |
| instance Join PrismConstraint GetterConstraint FoldConstraint | |
| instance Join GetterConstraint PrismConstraint FoldConstraint | |
| instance Join PrismConstraint FoldConstraint FoldConstraint | |
| instance Join FoldConstraint PrismConstraint FoldConstraint | |
| instance Join PrismConstraint SetterConstraint SetterConstraint | |
| instance Join SetterConstraint PrismConstraint SetterConstraint | |
| instance Join PrismConstraint TraversalConstraint TraversalConstraint | |
| instance Join TraversalConstraint PrismConstraint TraversalConstraint | |
| instance Join PrismConstraint LensConstraint TraversalConstraint | |
| instance Join LensConstraint PrismConstraint TraversalConstraint | |
| instance Join PrismConstraint PrismConstraint PrismConstraint | |
| class AsArithException t where | |
| type AsArithExceptionConstraint t :: (* -> * -> *) -> (* -> *) -> Constraint | |
| type AsArithExceptionConstraint t = PrismConstraint | |
| _AsArithException' :: AsArithExceptionConstraint t p f => Optic' p f t ArithException | |
| _AsArithExceptionIsPrism :: proxy t -> Dict (AsArithExceptionConstraint t :< PrismConstraint) | |
| default _AsArithExceptionIsPrism :: (AsArithExceptionConstraint t ~ PrismConstraint) => proxy t -> Dict (AsArithExceptionConstraint t :< PrismConstraint) | |
| _AsArithExceptionIsPrism _ = Dict | |
| _AsArithException :: forall t p f. (AsArithException t, Choice p, Applicative f) => Optic' p f t ArithException | |
| _AsArithException = case _AsArithExceptionIsPrism (Proxy :: Proxy t) of | |
| Dict -> case impl :: PrismConstraint p f :- AsArithExceptionConstraint t p f of | |
| Sub Dict -> _AsArithException' | |
| instance AsArithException ArithException where | |
| type AsArithExceptionConstraint ArithException = EqualityConstraint | |
| _AsArithExceptionIsPrism _ = Dict | |
| _AsArithException' = id | |
| instance AsArithException SomeException where | |
| _AsArithException' = exception |