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

1.6 KiB

barhep, |-, %brhp

Kicked trap

|- is a synthetic rune that produces a dry %gold trap and kicks it. You can think of a trap like a 'trap door', since |- is a door with only one arm $, the empty name.

|- is different from |. in that it is kicked by default. |- is similar to creating and calling an anonymous function and is quite commonly used for loops or recursion.

See also

bardot, |., %brdt

Produces

Twig: [%brhp p=twig]

Sample

p is a twig

Tall form

|-  p

Wide form

|-(p)

Irregular form

None

Examples

/~zod/try=> |-(42)
  42

In contrast to our |. example, |- is kicked by default, so its internals are produced immediately.

/~zod/try=> =+  a=`*`~[41 42]
            |-
            ?~  a
              ~
            [-.a %m $(a +.a)]
[41 %m [42 %m ~]]

In this case we use |- for one of its most common applications, a loop. Here we walk across a by calling $ with a replaced by +.a, producing a nested tuple.

++  dec                                                 ::  decrement
  ~/  %dec
  |=  a=@
  ~|  %decrement-underflow
  ?<  =(0 a)
  =+  b=0
  |-  ^-  @
  ?:  =(a +(b))
    b
  $(b +(b))

In ++dec, found in hoon.hoon, |- creates a trap that contains the test and looping semantics. Essentially, we count up to a-1 by incrementing b. Using |- inside an existing core as we do here is its most common use.