on 492ae2f help sign in
48 lines 1.0 kB history raw
1### `++cook`
3Apply gate
5Parser modifier. Produces a parser that takes a (successful) result of a
6`++rule` `sef` and slams it through `poq`.
8Accepts
9-------
11`poq` is a gate.
13`sef` is a `++rule`.
15Produces
16--------
18An `++rule`.
20Source
21------
23 ++ cook :: apply gate
24 ~/ %cook
25 |* {poq/$-(* *) sef/rule}
26 ~/ %fun
27 |= tub/nail
28 =+ vex=(sef tub)
29 ?~ q.vex
30 vex
31 [p=p.vex q=[~ u=[p=(poq p.u.q.vex) q=q.u.q.vex]]]
32 ::
34Examples
35--------
37 ~zod/try=> ((cook ,@ud (just 'a')) [[1 1] "abc"])
38 [p=[p=1 q=2] q=[~ u=[p=97 q=[p=[p=1 q=2] q="bc"]]]]
39 ~zod/try=> ((cook ,@tas (just 'a')) [[1 1] "abc"])
40 [p=[p=1 q=2] q=[~ u=[p=%a q=[p=[p=1 q=2] q="bc"]]]]
41 ~zod/try=> ((cook |=(a=@ +(a)) (just 'a')) [[1 1] "abc"])
42 [p=[p=1 q=2] q=[~ u=[p=98 q=[p=[p=1 q=2] q="bc"]]]]
43 ~zod/try=> ((cook |=(a=@ `@t`+(a)) (just 'a')) [[1 1] "abc"])
44 [p=[p=1 q=2] q=[~ u=[p='b' q=[p=[p=1 q=2] q="bc"]]]]
48***