DeepArrow-0.2: Arrows for "deep application"Source codeContentsIndex
Data.DDeepArrow
Portabilityportable
Stabilityexperimental
Maintainerconal@conal.net
Contents
The DeepArrow data type
Description
"Deep arrows" as a data type. Handy for code generation.
Synopsis
data DArrow where
Arr :: DVal (a -> b) -> a `DArrow` b
Compose :: (a `DArrow` b) -> (b `DArrow` c) -> a `DArrow` c
First :: (a `DArrow` a') -> (a, b) `DArrow` (a', b)
Second :: (b `DArrow` b') -> (a, b) `DArrow` (a, b')
Result :: (b `DArrow` b') -> (a -> b) `DArrow` (a -> b')
FunF :: (c -> a, b) `DArrow` (c -> (a, b))
FunS :: (a, c -> b) `DArrow` (c -> (a, b))
FunR :: (a -> c -> b) `DArrow` (c -> a -> b)
CurryA :: ((a, b) -> c) `DArrow` (a -> b -> c)
UncurryA :: (a -> b -> c) `DArrow` ((a, b) -> c)
LAssocA :: (a, (b, c)) `DArrow` ((a, b), c)
RAssocA :: ((a, b), c) `DArrow` (a, (b, c))
IdA :: a `DArrow` a
DupA :: a `DArrow` (a, a)
FstA :: (a, b) `DArrow` a
SndA :: (a, b) `DArrow` b
SwapA :: (a, b) `DArrow` (b, a)
data DVal where
ExpDV :: HsExp -> DVal a
AppDA :: (a `DArrow` b) -> DVal a -> DVal b
PairDV :: DVal a -> DVal b -> DVal (a, b)
The DeepArrow data type
data DArrow whereSource
This GADT mirrors the DeepArrow class and part of the FunArr class.
Constructors
Arr :: DVal (a -> b) -> a `DArrow` b
Compose :: (a `DArrow` b) -> (b `DArrow` c) -> a `DArrow` c
First :: (a `DArrow` a') -> (a, b) `DArrow` (a', b)
Second :: (b `DArrow` b') -> (a, b) `DArrow` (a, b')
Result :: (b `DArrow` b') -> (a -> b) `DArrow` (a -> b')
FunF :: (c -> a, b) `DArrow` (c -> (a, b))
FunS :: (a, c -> b) `DArrow` (c -> (a, b))
FunR :: (a -> c -> b) `DArrow` (c -> a -> b)
CurryA :: ((a, b) -> c) `DArrow` (a -> b -> c)
UncurryA :: (a -> b -> c) `DArrow` ((a, b) -> c)
LAssocA :: (a, (b, c)) `DArrow` ((a, b), c)
RAssocA :: ((a, b), c) `DArrow` (a, (b, c))
IdA :: a `DArrow` a
DupA :: a `DArrow` (a, a)
FstA :: (a, b) `DArrow` a
SndA :: (a, b) `DArrow` b
SwapA :: (a, b) `DArrow` (b, a)
show/hide Instances
data DVal whereSource
A GADT alternative to terms. Allows generation of Haskell terms and, from there, strings and eval.
Constructors
ExpDV :: HsExp -> DVal a
AppDA :: (a `DArrow` b) -> DVal a -> DVal b
PairDV :: DVal a -> DVal b -> DVal (a, b)
show/hide Instances
Produced by Haddock version 2.3.0