urbit/base/pub/doc/hoon/runes/bc/bccn.md
Anton Dyudin 6cbb6b060d Revert "remove docs for demo", "remove odds and ends", "demo network", "DEMO ONLY: root beak as %demo.", "DEMO ONLY: don't show doznec flapping.", "Prinrtf."
This reverts commit 8e1e40d75b3ab15c194b6bf9570f3edc46e2de58.
This reverts commit f073c490f9fd7c5abc033af4857df92229877de7.
This reverts commit f187d2d7e01a54823f3e979af9bbd148b398e7e9.
This reverts commit bc272862a73cfce1b118586ca39d3a377d841f1b.
This reverts commit 30a397513f8890a3406dc7ab91c6e067e3bbfbbb.
This reverts commit 4fc6856fb50d88c20a0f533392ca606641c5f38f.

Conflicts:
	urb/urbit.pill
	urb/zod/base/lib/drum.hoon
2015-06-15 18:10:02 -07:00

1.5 KiB

buccen $% %bccn

Tagged union

$% is a tile rune that produces a %kelp, the tile of the discriminated union. $% takes a list of lines which are labeled cases, called fronds, closed by ==. Commonly used for pattern matching.

Produces

Twig: [%kelp p=[i=line t=(list line)]]

Sample

p is a ++list of ++lines.

Tall form

$%  p
    q
==

Wide form

None

Irregular form

None

Examples

~zod/try=> $%([%& @p] [%| @t])
<1.dhe [* @n <246.qra 41.uuw 374.glo 100.rip 1.ypj %164>]>
~zod/try=> *$%([%& @p] [%| @t])
[%.y ~zod]
~zod/try=> :type; *$%([%& @p] [%| @t])
[%.y ~zod]
{[%.y @p] [%.n @t]}
~zod/try=> :type; *(each ,@p ,@t)
[%.y p=~zod]
{[%.y p=@p] [%.n p=@t]}
~zod/try=> $%(~ [%a 1])
~ <syntax error at [1 13]>
~zod/try=> $%([%~ ~] [%a 1])
<1.yck [* @n <246.qra 41.uuw 374.glo 100.rip 1.ypj %164>]>
~zod/try=> *$%([%~ ~] [%a 1])
[~ ~]

++  foot  $%  [%ash p=twig]                             ::  dry, geometric
              [%elm p=twig]                             ::  wet, generic
              [%oak ~]                                  ::  XX not used
              [%yew p=(map term foot)]                  ::  XX not used
          ==

In ++foot, $% creates a list of possible cases. That is, a ++foot can be either %ash, %elm, %oak or %yew.