urbit/base/pub/doc/hoon/runes/wt/wtls.md
2015-04-29 18:48:45 -04:00

106 lines
1.9 KiB
Markdown

[wutlus, `?+`, %wtls](#wtls)
============================
Switch with default
`?+` is a synthetic rune that selects a case in `q` for the actual type
of `p` with a default case, `q`. The labels in `r` must have the same
[icon]() as `p` The list of cases, `r` must be terminated by `==`.
See also
--------
[wuthep, `?-`, %wthp](#wthp)
============================
Produces
--------
Twig: `[%wtls p=wing q=twig r=tine]`
Sample
------
`p` is a [`++wing`](). `q` is a [twig](). `r` is a [`++tine`]().
Tall form
---------
Kingside:
?+ p
q
p.i.r q.i.r
p.i.t.r q.i.t.r
p.i.t.t.r q.i.t.t.r
==
Queenside:
?+ p
q
p.i.r
q.i.r
p.i.t.r
q.i.t.r
p.i.t.t.r
q.i.t.t.r
==
Wide form
---------
?+(p p.i.r q.i.r, p.i.t.r q.i.t.r, p.i.t.t.r q.i.t.t.r)
Irregular form
--------------
None
Examples
--------
~zod/try=>
=cor |= typ=@ta
?+ typ 0
%a 1
%b 2
==
new var %cor
~zod/try=>
(cor 'a')
1
~zod/try=>
(cor 'c')
0
Here is a simple example of `?+` showing that although the cases must
match the icon of its input, all possible cases don't need to be covered
since `?+` has a default case. We create a core, `cor` that takes an
input `typ`, a `@ta`. Calling `cor` selects one of our cases when it is
covered, or the default.
~zod/try=>
?+ 'a' 0
%a 1
==
1
~zod/try=>
?+ [0 'a'] 0
%a 1
==
! poke-mack-fail
! /~zod/try/~2014.11.2..16.45.31..7b2a:<[1 1].[3 7]>
! mint-vain
! ford: call ~hidper-sommur
! poking %poke-txt
! error in app %shell on ~zod at instance /shell/terminal
~zod/try=>
?+ [0 1] 0
[0 %a] 1
==
0
This example shows how `?-` can fail. Our input icon must match the icon
of our cases.