Safe HaskellSafe-Infered

AOP.Internal.OpenApp

Synopsis

Documentation

class Typeable1Monad m => OpenApp f m where

Open function application. # is defined as a typeclass to make it extensible to different function representations.

f is a function-like type constructor that receives an argument and return types. For simplicity this does not appear in the paper.

The returned value is always a regular (woven) function.

Methods

(#) :: (PolyTypeable (f a (m b)), PolyTypeable (a -> m b)) => f a (m b) -> a -> m b

Instances

Typeable1Monad m => OpenApp (->) (AOT m)

Every regular functions is tagged with the same default tag.

Typeable1Monad m => OpenApp Function (AOT m)

Function is a wrapper to add a notion of identity based on tags.

Typeable1Monad (t m) => OpenApp (->) (NIAOT t m)

Open application of regular functions.

Typeable1Monad (t m) => OpenApp Function (NIAOT t m)

Open application of tagged functions.