functor-friends-0.1.0.0: Friendly helpers for your recursion schemes.

Safe HaskellSafe
LanguageHaskell2010

Data.Functor.Annotated

Contents

Synopsis

The Annotated type family

type family Annotated a f Source #

If T is a type that is defined as a fixpoint, then an Annotated a T will be the type of "Ts with an a-valued annotation attached to each node".

Instances

type Annotated a (Fix f) Source # 
type Annotated a (Fix f) = Fix (AnnotatedF a f)

Types

data AnnotatedF a f t Source #

AnnotatedF a f transforms the functor f to add a-valued annotations.

Constructors

NoteF 

Fields

Instances

Decomposed (AnnotatedF a) Source # 

Methods

fmap1 :: (f t -> g t) -> AnnotatedF a f t -> AnnotatedF a g t Source #

Functor f => Functor (AnnotatedF a f) Source # 

Methods

fmap :: (a -> b) -> AnnotatedF a f a -> AnnotatedF a f b #

(<$) :: a -> AnnotatedF a f b -> AnnotatedF a f a #

(Eq (f t), Eq a) => Eq (AnnotatedF a f t) Source # 

Methods

(==) :: AnnotatedF a f t -> AnnotatedF a f t -> Bool #

(/=) :: AnnotatedF a f t -> AnnotatedF a f t -> Bool #

(Ord (f t), Ord a) => Ord (AnnotatedF a f t) Source # 

Methods

compare :: AnnotatedF a f t -> AnnotatedF a f t -> Ordering #

(<) :: AnnotatedF a f t -> AnnotatedF a f t -> Bool #

(<=) :: AnnotatedF a f t -> AnnotatedF a f t -> Bool #

(>) :: AnnotatedF a f t -> AnnotatedF a f t -> Bool #

(>=) :: AnnotatedF a f t -> AnnotatedF a f t -> Bool #

max :: AnnotatedF a f t -> AnnotatedF a f t -> AnnotatedF a f t #

min :: AnnotatedF a f t -> AnnotatedF a f t -> AnnotatedF a f t #

(Pretty (f (Fix (AnnotatedF a f))), Show a) => Pretty (AnnotatedF a f (Fix (AnnotatedF a f))) Source #

Pretty-printer for annotations.

Methods

pretty :: AnnotatedF a f (Fix (AnnotatedF a f)) -> String Source #

Patterns for hiding Fix

pattern Note :: forall t t1. t1 -> t (Fix (AnnotatedF t1 t)) -> Fix (AnnotatedF t1 t) Source #

Utility functions

note :: Fix (AnnotatedF t f) -> t Source #

Extract the top-level annotation.

erase :: Functor f => Fix (AnnotatedF t f) -> Fix f Source #

Discard the annotations.

foldMemo :: Functor f => (f t -> t) -> Fix f -> Fix (AnnotatedF t f) Source #

Fold a function over a data structure, storing the sub-results as annotations.