urbit/base/pub/doc/hoon/runes/br.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.2 KiB

bar | %bar

Core construction

The | runes construct cores. In the broadest case you can think of a core as similar to an object with named properties that can contain either functions or data.

The | runes accept an associative array of names (++term) to (++foot), each pair of which are called an ++arm, producing one of the three basic categories of core.

The natural, generic core:

|% Generic core, with [++arms] generally containing ++twigs


Doors, generic core with a sample:

Gates:

Cores with one arm [$], the empty name and which takes a sample p. The closest thing in Hoon to a function.

|= dry gate, where the sample is typechecked at compile time. |* wet gate, where the sample is typechecked at runtime against its product type.

Traps:

Traps reduce to a |% with one arm $, the empty name. A trap is just some computation that has been put inside of a wrapper so that it may be passed around.

|. Generic trap. |- Trap automatically [kick]ed (called) after construction.