module Fresnel.Optional.Internal ( IsOptional ) where import Control.Arrow (Kleisli) import Data.Profunctor (Forget, Star) import Fresnel.Lens.Internal (IsLens) import Fresnel.Prism.Internal (IsPrism) import Fresnel.Profunctor.OptionalStar (OptionalStar) class (IsLens p, IsPrism p) => IsOptional p where instance IsOptional (->) instance Monad m => IsOptional (Kleisli m) instance Monoid r => IsOptional (Forget r) instance Applicative f => IsOptional (Star f) instance Functor f => IsOptional (OptionalStar f)