Mercurial > urweb
comparison doc/manual.tex @ 1608:77180224f1f9
Mention Basis.current in manual
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Thu, 24 Nov 2011 11:09:50 -0500 |
parents | b1af16cdc659 |
children | 5c1f10cdac63 |
comparison
equal
deleted
inserted
replaced
1607:da788bd72c9e | 1608:77180224f1f9 |
---|---|
2035 \mt{val} \; \mt{get} : \mt{t} ::: \mt{Type} \to \mt{source} \; \mt{t} \to \mt{transaction} \; \mt{t} | 2035 \mt{val} \; \mt{get} : \mt{t} ::: \mt{Type} \to \mt{source} \; \mt{t} \to \mt{transaction} \; \mt{t} |
2036 \end{array}$$ | 2036 \end{array}$$ |
2037 | 2037 |
2038 Only source creation and setting are supported server-side, as a convenience to help in setting up a page, where you may wish to allocate many sources that will be referenced through the page. All server-side storage of values inside sources uses string serializations of values, while client-side storage uses normal JavaScript values. | 2038 Only source creation and setting are supported server-side, as a convenience to help in setting up a page, where you may wish to allocate many sources that will be referenced through the page. All server-side storage of values inside sources uses string serializations of values, while client-side storage uses normal JavaScript values. |
2039 | 2039 |
2040 Pure functions over arbitrary numbers of sources are represented in a monad of \emph{signals}, which may only be used in client-side code. This is presented to the programmer in the form of a monad $\mt{signal}$, each of whose values represents (conceptually) some pure function over all sources that may be allocated in the course of program execution. A monad operation $\mt{signal}$ denotes the identity function over a particular source. By using $\mt{signal}$ on a source, you implicitly subscribe to change notifications for that source. That is, your signal will automatically be recomputed as that source changes. The usual monad operators make it possible to build up complex signals that depend on multiple sources; automatic updating upon source-value changes still happens automatically. | 2040 Pure functions over arbitrary numbers of sources are represented in a monad of \emph{signals}, which may only be used in client-side code. This is presented to the programmer in the form of a monad $\mt{signal}$, each of whose values represents (conceptually) some pure function over all sources that may be allocated in the course of program execution. A monad operation $\mt{signal}$ denotes the identity function over a particular source. By using $\mt{signal}$ on a source, you implicitly subscribe to change notifications for that source. That is, your signal will automatically be recomputed as that source changes. The usual monad operators make it possible to build up complex signals that depend on multiple sources; automatic updating upon source-value changes still happens automatically. There is also an operator for computing a signal's current value within a transaction. |
2041 | 2041 |
2042 $$\begin{array}{l} | 2042 $$\begin{array}{l} |
2043 \mt{con} \; \mt{signal} :: \mt{Type} \to \mt{Type} \\ | 2043 \mt{con} \; \mt{signal} :: \mt{Type} \to \mt{Type} \\ |
2044 \mt{val} \; \mt{signal\_monad} : \mt{monad} \; \mt{signal} \\ | 2044 \mt{val} \; \mt{signal\_monad} : \mt{monad} \; \mt{signal} \\ |
2045 \mt{val} \; \mt{signal} : \mt{t} ::: \mt{Type} \to \mt{source} \; \mt{t} \to \mt{signal} \; \mt{t} | 2045 \mt{val} \; \mt{signal} : \mt{t} ::: \mt{Type} \to \mt{source} \; \mt{t} \to \mt{signal} \; \mt{t} \\ |
2046 \mt{val} \; \mt{current} : \mt{t} ::: \mt{Type} \to \mt{signal} \; \mt{t} \to \mt{transaction} \; \mt{t} | |
2046 \end{array}$$ | 2047 \end{array}$$ |
2047 | 2048 |
2048 A reactive portion of an HTML page is injected with a $\mt{dyn}$ tag, which has a signal-valued attribute $\mt{Signal}$. | 2049 A reactive portion of an HTML page is injected with a $\mt{dyn}$ tag, which has a signal-valued attribute $\mt{Signal}$. |
2049 | 2050 |
2050 $$\begin{array}{l} | 2051 $$\begin{array}{l} |