| Portability | multi-parameter type classes |
|---|---|
| Stability | experimental |
| Maintainer | conal@conal.net |
Data.Lambda
Description
Make function-like things
type LambdaTy src snk = forall a b. src a -> snk b -> snk (a -> b)Source
Type of lambda method. Think of src as the bound variable (or
pattern) part of a lambda and snk as the expression part. They
combine to form a function-typed expression.
Instance template:
instance (Applicative f, Lambda src snk)
=> Lambda (f :. src) (f :. snk) where
lambda = apLambda
class Lambda src snk whereSource
Type constructor class for function-like things having lambda-like construction.
Instances
| Lambda IO OI | |
| Applicative f => Lambda f (:->: f (Const o)) | |
| Applicative f => Lambda f (:. (Flip (->) o) f) | |
| Applicative f => Lambda f (:. f (Flip (->) o)) | |
| Lambda Id (Flip (->) o) | |
| (Lambda src snk, Lambda dom' ran') => Lambda (:*: src dom') (:*: snk ran') | |
| (Arrow ~>, Unlambda f f', Lambda g g') => Lambda (Arrw ~> f g) (Arrw ~> f' g') |
Dissect function-like things
class Unlambda src snk | snk -> src whereSource
Like Unpair, but for functions. Minimal instance definition: either (a)
unlambda or (b) both of fsrc and fres.