Safe Haskell | Safe |
---|---|

Language | Haskell98 |

- generic2 :: C w => (b -> a) -> (a -> b) -> Variable w s a -> Variable w s b -> T w s ()
- generic3 :: C w => (b -> c -> a) -> (c -> a -> b) -> (a -> b -> c) -> Variable w s a -> Variable w s b -> Variable w s c -> T w s ()
- equ :: C w => Variable w s a -> Variable w s a -> T w s ()
- pair :: C w => Variable w s a -> Variable w s b -> Variable w s (a, b) -> T w s ()
- max :: (Ord a, C w) => Variable w s a -> Variable w s a -> Variable w s a -> T w s ()
- add :: (Num a, C w) => Variable w s a -> Variable w s a -> Variable w s a -> T w s ()
- mul :: (Fractional a, C w) => Variable w s a -> Variable w s a -> Variable w s a -> T w s ()
- square :: (Floating a, C w) => Variable w s a -> Variable w s a -> T w s ()
- pow :: (Floating a, C w) => Variable w s a -> Variable w s a -> Variable w s a -> T w s ()

# Custom rules

generic3 :: C w => (b -> c -> a) -> (c -> a -> b) -> (a -> b -> c) -> Variable w s a -> Variable w s b -> Variable w s c -> T w s () Source #

# Common rules

pair :: C w => Variable w s a -> Variable w s b -> Variable w s (a, b) -> T w s () Source #

You might be tempted to use the `pair`

rule to collect parameters
for rules with more than three arguments.
This is generally not a good idea since this way you lose granularity.
For building rules with more than three arguments,
please build according assignments with `arg`

and `runApply`

and bundle these assignments to rules.
This is the way, `generic2`

and `generic3`

work.