definition module htmlArrow
// arrow implementation for Html GEC's
// (c) 2005 MJP
import htmlHandler
import StdArrow
// GEC circuit from a to b, for Html
:: GecCircuit a b
instance Arrow GecCircuit
// all "real" editors in the circuit will add a piece of html code in [Body]
startCircuit :: !(GecCircuit a b) !a !*HSt -> (!Form b,!*HSt)
// an editor shows the value which can be modified by the application user using a browser
// a display just shows the value
// a store applies the function to the stored value
edit :: (FormId a) -> GecCircuit a a | iData a
display :: (FormId a) -> GecCircuit a a | iData a
store :: (FormId a) -> GecCircuit (a -> a) a | iData a
feedback :: !(GecCircuit a b) !(GecCircuit b a) -> GecCircuit a b
self :: (a -> a) !(GecCircuit a a) -> GecCircuit a a
loops :: !(GecCircuit (a, b) (c, b)) -> GecCircuit a c | iData b
(`bindC`) infix 0 :: !(GecCircuit a b) (b -> GecCircuit b c) -> (GecCircuit a c)
(`bindCI`) infix 0 :: !(GecCircuit a b) ((Form b) -> GecCircuit b c) -> (GecCircuit a c)
// to lift library functions to the circuit domain
lift :: !(InIDataId a) ((InIDataId a) *HSt -> (Form b,*HSt)) -> GecCircuit a b