bowtie-0.7.0: Tying knots in polynomial functors
Safe HaskellNone
LanguageGHC2021

Bowtie.Fix

Synopsis

Documentation

newtype Fix (f :: Type -> Type) Source #

A basic Functor fixpoint like you'd see anywhere.

Constructors

Fix 

Fields

Instances

Instances details
IsString (f (Fix f)) => IsString (Fix f) Source # 
Instance details

Defined in Bowtie.Fix

Methods

fromString :: String -> Fix f #

Show (f (Fix f)) => Show (Fix f) Source # 
Instance details

Defined in Bowtie.Fix

Methods

showsPrec :: Int -> Fix f -> ShowS #

show :: Fix f -> String #

showList :: [Fix f] -> ShowS #

Eq (f (Fix f)) => Eq (Fix f) Source # 
Instance details

Defined in Bowtie.Fix

Methods

(==) :: Fix f -> Fix f -> Bool #

(/=) :: Fix f -> Fix f -> Bool #

Ord (f (Fix f)) => Ord (Fix f) Source # 
Instance details

Defined in Bowtie.Fix

Methods

compare :: Fix f -> Fix f -> Ordering #

(<) :: Fix f -> Fix f -> Bool #

(<=) :: Fix f -> Fix f -> Bool #

(>) :: Fix f -> Fix f -> Bool #

(>=) :: Fix f -> Fix f -> Bool #

max :: Fix f -> Fix f -> Fix f #

min :: Fix f -> Fix f -> Fix f #

Pretty (f (Fix f)) => Pretty (Fix f) Source # 
Instance details

Defined in Bowtie.Fix

Methods

pretty :: Fix f -> Doc ann #

prettyList :: [Fix f] -> Doc ann #

Functor f => Corecursive (Fix f) Source # 
Instance details

Defined in Bowtie.Fix

Methods

embed :: Base (Fix f) (Fix f) -> Fix f #

ana :: (a -> Base (Fix f) a) -> a -> Fix f #

apo :: (a -> Base (Fix f) (Either (Fix f) a)) -> a -> Fix f #

postpro :: Recursive (Fix f) => (forall b. Base (Fix f) b -> Base (Fix f) b) -> (a -> Base (Fix f) a) -> a -> Fix f #

gpostpro :: (Recursive (Fix f), Monad m) => (forall b. m (Base (Fix f) b) -> Base (Fix f) (m b)) -> (forall c. Base (Fix f) c -> Base (Fix f) c) -> (a -> Base (Fix f) (m a)) -> a -> Fix f #

Functor f => Recursive (Fix f) Source # 
Instance details

Defined in Bowtie.Fix

Methods

project :: Fix f -> Base (Fix f) (Fix f) #

cata :: (Base (Fix f) a -> a) -> Fix f -> a #

para :: (Base (Fix f) (Fix f, a) -> a) -> Fix f -> a #

gpara :: (Corecursive (Fix f), Comonad w) => (forall b. Base (Fix f) (w b) -> w (Base (Fix f) b)) -> (Base (Fix f) (EnvT (Fix f) w a) -> a) -> Fix f -> a #

prepro :: Corecursive (Fix f) => (forall b. Base (Fix f) b -> Base (Fix f) b) -> (Base (Fix f) a -> a) -> Fix f -> a #

gprepro :: (Corecursive (Fix f), Comonad w) => (forall b. Base (Fix f) (w b) -> w (Base (Fix f) b)) -> (forall c. Base (Fix f) c -> Base (Fix f) c) -> (Base (Fix f) (w a) -> a) -> Fix f -> a #

type Base (Fix f) Source # 
Instance details

Defined in Bowtie.Fix

type Base (Fix f) = f

mkFix :: forall t (f :: Type -> Type). (Recursive t, Base t ~ f) => t -> Fix f Source #

Pull a recursive structure apart and retie as a Fix.

unMkFix :: forall t (f :: Type -> Type). (Corecursive t, Base t ~ f) => Fix f -> t Source #

Go the other way.

transFix :: Functor f => (forall x. f x -> g x) -> Fix f -> Fix g Source #

Transform the base Functor.