Safe Haskell | None |
---|---|
Language | Haskell98 |
- data T p inp out
- lift :: T p inp out -> T p inp out
- fromSignal :: T p out -> T p inp out
- ($&) :: T p b c -> T p a b -> T p a c
- (&|&) :: T p a b -> T p a c -> T p a (b, c)
- compile :: T p inp out -> T p inp out
- compileSignal :: T p () out -> T p out
- withArgs :: MakeArguments inp => (Arguments (T p inp) inp -> T p inp out) -> T p inp out
- class MakeArguments arg where
- type family Arguments f arg
- newtype AnyArg a = AnyArg {
- getAnyArg :: a
- data Atom a = Atom
- atom :: Atom a
- withGuidedArgs :: (MakeGuidedArguments pat, PatternArguments pat ~ inp) => pat -> (GuidedArguments (T p inp) pat -> T p inp out) -> T p inp out
- class MakeGuidedArguments pat where
- makeGuidedArgs :: Functor f => pat -> f (PatternArguments pat) -> GuidedArguments f pat
- type family GuidedArguments f pat
- type family PatternArguments pat
- data PrepareArguments f merged separated
- withPreparedArgs :: PrepareArguments (T p inp) inp a -> (a -> T p inp out) -> T p inp out
- withPreparedArgs2 :: PrepareArguments (T p (inp0, inp1)) inp0 a -> PrepareArguments (T p (inp0, inp1)) inp1 b -> (a -> b -> T p (inp0, inp1) out) -> T p (inp0, inp1) out
- atomArg :: PrepareArguments f a (f a)
- stereoArgs :: Functor f => PrepareArguments f a b -> PrepareArguments f (T a) (T b)
- pairArgs :: Functor f => PrepareArguments f a0 b0 -> PrepareArguments f a1 b1 -> PrepareArguments f (a0, a1) (b0, b1)
- tripleArgs :: Functor f => PrepareArguments f a0 b0 -> PrepareArguments f a1 b1 -> PrepareArguments f a2 b2 -> PrepareArguments f (a0, a1, a2) (b0, b1, b2)
Documentation
Functor (T p inp) Source | |
Applicative (T p inp) Source | |
(Field b, Real b, RationalConstant b) => Fractional (T p a b) Source | |
(PseudoRing b, Real b, IntegerConstant b) => Num (T p a b) Source | |
(Transcendental b, RationalConstant b) => C (T p a b) Source | |
(Transcendental b, RationalConstant b) => C (T p a b) Source | |
(Field b, RationalConstant b) => C (T p a b) Source | |
(PseudoRing b, IntegerConstant b) => C (T p a b) Source | |
Additive b => C (T p a b) Source |
fromSignal :: T p out -> T p inp out Source
compileSignal :: T p () out -> T p out Source
withArgs :: MakeArguments inp => (Arguments (T p inp) inp -> T p inp out) -> T p inp out Source
Using withArgs
you can simplify
let x = F.lift (arr fst) y = F.lift (arr (fst.snd)) z = F.lift (arr (snd.snd)) in F.compile (f x y z)
to
withArgs $ \(x,(y,z)) -> f x y z
class MakeArguments arg where Source
MakeArguments () Source | |
MakeArguments (Value a) Source | |
MakeArguments a => MakeArguments (T a) Source | |
MakeArguments (T v) Source | |
MakeArguments (AnyArg a) Source | |
MakeArguments (ParameterPacked a) Source | |
(MakeArguments a, MakeArguments b) => MakeArguments (a, b) Source | |
MakeArguments (Value n a) Source | |
MakeArguments (CascadeParameter n a) Source | |
MakeArguments (ParameterValue n a) Source | |
(MakeArguments a, MakeArguments b, MakeArguments c) => MakeArguments (a, b, c) Source |
type family Arguments f arg Source
type Arguments f () = f () Source | |
type Arguments f (AnyArg a) = f a Source | |
type Arguments f (T v) = f (T v) Source | |
type Arguments f (T a) = T (Arguments f a) Source | Consistent with pair instance.
You may use |
type Arguments f (Value a) = f (Value a) Source | |
type Arguments f (ParameterPacked a) = f (ParameterPacked a) Source | |
type Arguments f (T a) = f (T a) Source | |
type Arguments f (a, b) = (Arguments f a, Arguments f b) Source | |
type Arguments f (Value n a) = f (Value n a) Source | |
type Arguments f (CascadeParameter n a) = f (CascadeParameter n a) Source | |
type Arguments f (ParameterValue n a) = f (ParameterValue n a) Source | |
type Arguments f (a, b, c) = (Arguments f a, Arguments f b, Arguments f c) Source |
You can use this to explicitly stop breaking of composed data types.
It might be more comfortable to do this using withGuidedArgs
.
MakeGuidedArguments (Atom a) Source | |
type GuidedArguments f (Atom a) = f a Source | |
type PatternArguments (Atom a) = a Source |
withGuidedArgs :: (MakeGuidedArguments pat, PatternArguments pat ~ inp) => pat -> (GuidedArguments (T p inp) pat -> T p inp out) -> T p inp out Source
This is similar to withArgs
but it allows to specify the decomposition depth using a pattern.
class MakeGuidedArguments pat where Source
makeGuidedArgs :: Functor f => pat -> f (PatternArguments pat) -> GuidedArguments f pat Source
MakeGuidedArguments () Source | |
MakeGuidedArguments a => MakeGuidedArguments (T a) Source | |
MakeGuidedArguments (Atom a) Source | |
(MakeGuidedArguments a, MakeGuidedArguments b) => MakeGuidedArguments (a, b) Source | |
(MakeGuidedArguments a, MakeGuidedArguments b, MakeGuidedArguments c) => MakeGuidedArguments (a, b, c) Source |
type family GuidedArguments f pat Source
type GuidedArguments f () = f () Source | |
type GuidedArguments f (T a) = T (GuidedArguments f a) Source | |
type GuidedArguments f (Atom a) = f a Source | |
type GuidedArguments f (a, b) = (GuidedArguments f a, GuidedArguments f b) Source | |
type GuidedArguments f (a, b, c) = (GuidedArguments f a, GuidedArguments f b, GuidedArguments f c) Source |
type family PatternArguments pat Source
type PatternArguments () = () Source | |
type PatternArguments (T a) = T (PatternArguments a) Source | |
type PatternArguments (Atom a) = a Source | |
type PatternArguments (a, b) = (PatternArguments a, PatternArguments b) Source | |
type PatternArguments (a, b, c) = (PatternArguments a, PatternArguments b, PatternArguments c) Source |
data PrepareArguments f merged separated Source
withPreparedArgs :: PrepareArguments (T p inp) inp a -> (a -> T p inp out) -> T p inp out Source
Alternative to withGuidedArgs. This way of pattern construction is even Haskell 98.
withPreparedArgs2 :: PrepareArguments (T p (inp0, inp1)) inp0 a -> PrepareArguments (T p (inp0, inp1)) inp1 b -> (a -> b -> T p (inp0, inp1) out) -> T p (inp0, inp1) out Source
atomArg :: PrepareArguments f a (f a) Source
stereoArgs :: Functor f => PrepareArguments f a b -> PrepareArguments f (T a) (T b) Source
pairArgs :: Functor f => PrepareArguments f a0 b0 -> PrepareArguments f a1 b1 -> PrepareArguments f (a0, a1) (b0, b1) Source
tripleArgs :: Functor f => PrepareArguments f a0 b0 -> PrepareArguments f a1 b1 -> PrepareArguments f a2 b2 -> PrepareArguments f (a0, a1, a2) (b0, b1, b2) Source