on master help sign in
Merge pull request #719 from urbit/egg-nit

Egg timer code nit & corrections

commit9ec97aebded2d43eccdc50d0c1e36c2ce89ee6fb authorDavid Kerschner <david@tlon.io> dateWed 13 Nov 2019, 17:37 (7 years ago) parent388d45828af635
1 file changed+9−9
tutorials/hoon/egg-timer.md+9−9
tutorials/hoon/egg-timer.md+9−9
@@ -10,7 +10,7 @@ The Arvo operating system is divided up into modules called vanes. Gall is the v
1010
1111```hoon
1212|%
13−+$ move (pair bone card)
13++$ move (pair bone card)
1414+$ card [%wait path @da]
1515--
1616|_ [bowl:gall ~]
@@ -21,7 +21,7 @@ The Arvo operating system is divided up into modules called vanes. Gall is the v
2121 [ost %wait /egg-timer (add now t)]
2222++ wake
2323 |= [=wire error=(unit tang)]
24− ^+ [*(list card) +>.$]
24+ ^+ [*(list move) +>.$]
2525 ~& "Timer went off!"
2626 [~ +>.$]
2727--
@@ -31,8 +31,8 @@ The first thing to notice is that we are creating a `core` (`|%`) and a `door` (
3131
3232```hoon
3333|%
34−+$ card (pair bone move)
35−+$ move [%wait path @da]
34++$ move (pair bone card)
35++$ card [%wait path @da]
3636--
3737```
3838
@@ -59,7 +59,7 @@ The `door` we've made has two arms `poke-noun` and `wake`. Gall is capable of di
5959```hoon
6060++ poke-noun
6161 |= t=@dr
62− ^+ [*(list card) +>.$]
62+ ^+ [*(list move) +>.$]
6363 :_ +>.$ :_ ~
6464 [ost %wait /egg-timer (add now t)]
6565```
@@ -70,7 +70,7 @@ In the above code, we create a gate that takes a single `@dr` argument. `@dr` is
7070- `~m20` 20 minutes
7171- `~d42` 42 days
7272
73−As a matter of good type hygiene, we explicitly cast the output of this gate with `^+` to ensure we are producing the correct thing for Gall to handle. `^+` is the rune for casting by example. Our example is a cell: `list` of `card`, which we `bunt` with `*`, is the head; `+>.$`, the enclosing core which is our `door`, is the tail.
73+As a matter of good type hygiene, we explicitly cast the output of this gate with `^+` to ensure we are producing the correct thing for Gall to handle. `^+` is the rune for casting by example. Our example is a cell: `list` of `move`, which we `bunt` with `*`, is the head; `+>.$`, the enclosing core which is our `door`, is the tail.
7474
7575Next we're going to use the `:_` rune which is just the inverted form a `:-` the cell construction rune. We use it twice so the actual data will end up looking something like:
7676
@@ -96,12 +96,12 @@ The final part of this `move` is:
9696
9797`now` is the current time of type `@da`, and `t` was declared as `@dr`. Because they are both atoms, we can add `now` and `t` these two to get an atom that is `t` units of time into the future from `now`. That produced atom can be interpreted as a `@da`.
9898
99−That's all for our `poke-noun` arm. But what about when the timer goes off? Behn will create a `gift`, a similar construct to how we created an `card`, only this time it will end up being dispatched back to us via Gall in the `++wake` arm. Any app that wants to use a timer trigger needs to have an arm called `++wake`.
99+That's all for our `poke-noun` arm. But what about when the timer goes off? Behn will create a `gift`, a similar construct to how we created a `card`, only this time it will end up being dispatched back to us via Gall in the `++wake` arm. Any app that wants to use a timer trigger needs to have an arm called `++wake`.
100100
101101```hoon
102102++ wake
103103 |= [=wire error=(unit tang)]
104− ^+ [*(list card) +>.$]
104+ ^+ [*(list move) +>.$]
105105 ~& "Timer went off!"
106106 [~ +>.$]
107107```
@@ -116,4 +116,4 @@ Next we have the same cast we used in `++poke-noun` to make sure we are producin
116116
117117`~&` is the debugging printf rune. Here we're using it to output a message. We could, however, modify this line of code to do any other computation we would want to happen when `++wait` gets called.
118118
119−Finally, we need to produce our `card`. Here the effect is simply `[~ +>.$]`, since we have no `move` to make and we are not changing the state of our app. We just use the `door` without changing its sample.
119+Finally, we need to produce our `move`. Here the effect is simply `[~ +>.$]`, since we have no `move` to make and we are not changing the state of our app. We just use the `door` without changing its sample.