2023-02-01 19:05:18 +03:00
|
|
|
/- *sss
|
2023-02-15 17:54:06 +03:00
|
|
|
/+ *mip
|
2023-02-01 19:05:18 +03:00
|
|
|
::
|
|
|
|
|%
|
|
|
|
++ mk-subs |* [=(lake) paths=mold] -:+6:(da lake paths)
|
|
|
|
++ mk-pubs |* [=(lake) paths=mold] -:+6:(du lake paths)
|
|
|
|
++ mk-mar
|
|
|
|
|* =(lake)
|
|
|
|
|_ =(response:poke lake *)
|
|
|
|
++ grow
|
|
|
|
|%
|
|
|
|
++ noun response
|
|
|
|
--
|
|
|
|
++ grab
|
|
|
|
|%
|
|
|
|
++ noun (response:poke lake *)
|
|
|
|
--
|
|
|
|
++ grad %noun
|
|
|
|
--
|
|
|
|
++ lake-mark
|
|
|
|
|= =mark
|
|
|
|
^+ mark
|
2023-02-01 23:52:30 +03:00
|
|
|
?> =('sss-' (end [3 4] mark))
|
2023-02-01 19:05:18 +03:00
|
|
|
(cut 3 [4 (met 3 mark)] mark)
|
|
|
|
::
|
|
|
|
++ fled :: Like +sped but head is a path.
|
|
|
|
|= vax=vase
|
|
|
|
^- vase
|
|
|
|
:_ q.vax
|
|
|
|
%- ~(play ut p.vax)
|
|
|
|
=- [%wtgr [%wtts - [%& 2]~] [%$ 1]]
|
2023-02-15 17:54:06 +03:00
|
|
|
=/ pax ~| %path-none ;;(path -.q.vax)
|
2023-02-01 19:05:18 +03:00
|
|
|
|- ^- spec
|
|
|
|
?~ pax [%base %null]
|
|
|
|
[%bccl ~[[%leaf %ta -.pax] $(pax +.pax)]]
|
|
|
|
::
|
2023-02-15 17:54:06 +03:00
|
|
|
++ zoom |= =noun ~| %need-path $/sss/;;(path noun)
|
2023-02-01 19:05:18 +03:00
|
|
|
++ da
|
|
|
|
|* [=(lake) paths=mold]
|
|
|
|
=>
|
|
|
|
|%
|
2023-02-15 17:54:06 +03:00
|
|
|
+$ flow [=aeon fail=_| =rock:lake]
|
2023-02-01 19:05:18 +03:00
|
|
|
--
|
|
|
|
|_ [sub=(map [ship dude paths] flow) =bowl:gall result-type=type on-rock-type=type]
|
|
|
|
+$ from (on-rock:poke lake paths)
|
|
|
|
+$ into (response:poke lake paths)
|
|
|
|
+$ result (request:poke paths)
|
2023-02-15 17:54:06 +03:00
|
|
|
++ behn-s25
|
|
|
|
|= [=dude =aeon path=noun]
|
2023-02-01 19:05:18 +03:00
|
|
|
^- card:agent:gall
|
2023-02-15 17:54:06 +03:00
|
|
|
:* %pass (zoom sub/behn/(scot %p src.bowl)^dude^(scot %ud aeon)^path)
|
|
|
|
%arvo %b %wait (add ~s25 now.bowl)
|
|
|
|
==
|
|
|
|
++ pine |= [ship dude paths] (scry ~ +<)
|
|
|
|
++ surf pine
|
|
|
|
++ scry
|
|
|
|
|= [when=(unit aeon) who=ship which=dude where=paths]
|
|
|
|
^- card:agent:gall
|
|
|
|
=/ when ?~ when %~ (scot %ud u.when)
|
|
|
|
:* %pass (zoom request/scry/(scot %p who)^which^when^where)
|
|
|
|
%agent [who which]
|
2023-02-01 19:05:18 +03:00
|
|
|
%poke %sss-to-pub :- result-type ^- result
|
2023-02-15 17:54:06 +03:00
|
|
|
[where which ^when]
|
2023-02-01 19:05:18 +03:00
|
|
|
==
|
|
|
|
++ read
|
2023-02-16 09:46:52 +03:00
|
|
|
^- (map [ship dude paths] [fail=? rock:lake])
|
2023-02-01 19:05:18 +03:00
|
|
|
%- ~(run by sub)
|
|
|
|
|= =flow
|
2023-02-15 17:54:06 +03:00
|
|
|
[fail rock]:flow
|
2023-02-01 19:05:18 +03:00
|
|
|
::
|
|
|
|
++ chit
|
|
|
|
|= [[aeon=term ship=term dude=term path=paths] =sign:agent:gall]
|
|
|
|
^+ sub
|
|
|
|
?> ?=(%poke-ack -.sign)
|
|
|
|
?~ p.sign sub
|
|
|
|
%+ ~(jab by sub) [(slav %p ship) dude path]
|
|
|
|
|= =flow
|
2023-02-15 17:54:06 +03:00
|
|
|
?> =(aeon.flow (slav %ud aeon))
|
|
|
|
flow(fail &)
|
2023-02-01 19:05:18 +03:00
|
|
|
::
|
|
|
|
++ behn
|
2023-02-15 17:54:06 +03:00
|
|
|
|= [ship=term =dude aeon=term path=paths]
|
2023-02-01 19:05:18 +03:00
|
|
|
^- (list card:agent:gall)
|
2023-02-15 17:54:06 +03:00
|
|
|
=/ ship (slav %p ship)
|
2023-02-01 19:05:18 +03:00
|
|
|
?. (~(has by sub) ship dude path) ~
|
2023-02-15 17:54:06 +03:00
|
|
|
~[(scry `(slav %ud aeon) ship dude path)]
|
2023-02-01 19:05:18 +03:00
|
|
|
::
|
|
|
|
++ apply
|
|
|
|
|= res=(response:poke lake paths)
|
|
|
|
^- (quip card:agent:gall _sub)
|
2023-02-15 17:54:06 +03:00
|
|
|
?- type.res
|
|
|
|
%yore
|
|
|
|
:_ sub :_ ~
|
|
|
|
(pine src.bowl dude.res path.res)
|
2023-02-01 19:05:18 +03:00
|
|
|
::
|
2023-02-15 17:54:06 +03:00
|
|
|
%nigh
|
|
|
|
:_ sub :_ ~
|
|
|
|
(behn-s25 [dude aeon path]:res)
|
2023-02-01 19:05:18 +03:00
|
|
|
::
|
2023-02-15 17:54:06 +03:00
|
|
|
%scry
|
|
|
|
=* current [src.bowl dude.res path.res]
|
|
|
|
=/ [wave=(unit wave:lake) =flow]
|
|
|
|
=/ old=flow (~(gut by sub) current *flow)
|
|
|
|
?- what.res
|
|
|
|
%rock ?> (gte aeon.res aeon.old)
|
|
|
|
`[aeon.res | rock.res]
|
|
|
|
%wave ?> =(aeon.res +(aeon.old))
|
|
|
|
[`wave.res [aeon.res | (wash:lake rock.old wave.res)]]
|
|
|
|
==
|
2023-02-01 19:05:18 +03:00
|
|
|
:_ (~(put by sub) current flow)
|
2023-02-15 17:54:06 +03:00
|
|
|
%- flop
|
|
|
|
:~ (scry `+(aeon.res) src.bowl dude.res path.res)
|
|
|
|
:* %pass (zoom on-rock/(scot %ud aeon.flow)^(scot %p src.bowl)^dude.res^path.res)
|
2023-02-01 19:05:18 +03:00
|
|
|
%agent [our dap]:bowl
|
2023-02-15 17:54:06 +03:00
|
|
|
%poke %sss-on-rock on-rock-type ^- from
|
|
|
|
[path.res src.bowl dude.res rock.flow wave]
|
2023-02-01 19:05:18 +03:00
|
|
|
== ==
|
2023-02-15 17:54:06 +03:00
|
|
|
==
|
2023-02-01 19:05:18 +03:00
|
|
|
--
|
|
|
|
++ du
|
|
|
|
|* [=(lake) paths=mold]
|
|
|
|
=>
|
|
|
|
|%
|
|
|
|
+$ rule [rocks=_1 waves=_5]
|
|
|
|
+$ tide
|
|
|
|
$: rok=((mop aeon rock:lake) gte)
|
|
|
|
wav=((mop aeon wave:lake) lte)
|
|
|
|
rul=rule
|
2023-02-15 17:54:06 +03:00
|
|
|
mem=(mip aeon [ship dude] @da)
|
2023-02-01 19:05:18 +03:00
|
|
|
==
|
|
|
|
--
|
|
|
|
|_ [pub=(map paths tide) =bowl:gall result-type=type]
|
|
|
|
+* rok ((on aeon rock:lake) gte)
|
|
|
|
wav ((on aeon wave:lake) lte)
|
|
|
|
::
|
|
|
|
+$ into (request:poke paths)
|
|
|
|
+$ result (response:poke lake paths)
|
2023-02-15 17:54:06 +03:00
|
|
|
++ behn-s25
|
|
|
|
|= [=dude =aeon path=noun]
|
|
|
|
^- card:agent:gall
|
|
|
|
:* %pass (zoom pub/behn/(scot %p src.bowl)^dude^(scot %ud aeon)^path)
|
|
|
|
%arvo %b %wait (add ~s25 now.bowl)
|
|
|
|
==
|
|
|
|
++ behn-rest
|
|
|
|
|= [=ship =dude =aeon path=noun =@da]
|
|
|
|
^- card:agent:gall
|
|
|
|
:* %pass (zoom pub/behn/(scot %p ship)^dude^(scot %ud aeon)^path)
|
|
|
|
%arvo %b %rest da
|
|
|
|
==
|
2023-02-01 19:05:18 +03:00
|
|
|
++ rule
|
|
|
|
|= [path=paths =^rule]
|
|
|
|
^+ pub
|
|
|
|
%+ ~(jab by pub) path
|
|
|
|
|= =tide
|
2023-02-01 23:52:30 +03:00
|
|
|
(form tide(rul rule))
|
2023-02-01 19:05:18 +03:00
|
|
|
::
|
|
|
|
++ wipe
|
|
|
|
|= path=paths
|
|
|
|
^+ pub
|
|
|
|
%+ ~(jab by pub) path
|
|
|
|
|= =tide
|
2023-02-01 23:52:30 +03:00
|
|
|
%* . (form tide(rul [0 1]))
|
2023-02-01 19:05:18 +03:00
|
|
|
rul rul.tide
|
2023-02-01 23:52:30 +03:00
|
|
|
wav ~
|
2023-02-01 19:05:18 +03:00
|
|
|
==
|
2023-02-15 17:54:06 +03:00
|
|
|
++ behn
|
|
|
|
|= [ship=term =dude aeon=term path=paths]
|
|
|
|
^+ pub
|
|
|
|
%+ ~(jab by pub) path
|
|
|
|
|= =tide
|
|
|
|
^+ tide
|
|
|
|
tide(mem (~(del bi mem.tide) (slav %ud aeon) (slav %p ship) dude))
|
2023-02-01 23:52:30 +03:00
|
|
|
::
|
2023-02-15 17:54:06 +03:00
|
|
|
++ send
|
|
|
|
|= [=wave:lake =ship =dude =aeon path=paths]
|
|
|
|
^- card:agent:gall
|
|
|
|
=* mark (cat 3 %sss- name:lake)
|
|
|
|
:* %pass (zoom response/scry/(scot %p ship)^dude^(scot %ud aeon)^path)
|
|
|
|
%agent [ship dude]
|
|
|
|
%poke mark result-type ^- (response:poke lake paths)
|
|
|
|
[path dap.bowl aeon scry/wave/wave]
|
|
|
|
==
|
2023-02-01 19:05:18 +03:00
|
|
|
++ give
|
|
|
|
|= [path=paths =wave:lake]
|
2023-02-15 17:54:06 +03:00
|
|
|
^- (quip card:agent:gall _pub)
|
2023-02-01 19:05:18 +03:00
|
|
|
?~ ;;((soft ^path) path) ~| %need-path !!
|
|
|
|
=/ =tide (~(gut by pub) path *tide)
|
|
|
|
=/ next=aeon
|
2023-02-15 17:54:06 +03:00
|
|
|
.+ %+ max
|
2023-02-01 19:05:18 +03:00
|
|
|
(fall (bind (pry:rok rok.tide) head) 0)
|
|
|
|
(fall (bind (ram:wav wav.tide) head) 0)
|
2023-02-15 17:54:06 +03:00
|
|
|
::
|
|
|
|
:_ %+ ~(put by pub) path
|
|
|
|
=/ last=[=aeon =rock:lake] (fall (pry:rok rok.tide) *[key val]:rok)
|
|
|
|
=. wav.tide (put:wav wav.tide next wave)
|
|
|
|
=. mem.tide (~(del by mem.tide) next)
|
|
|
|
?. =(next (add aeon.last waves.rul.tide)) tide
|
|
|
|
(form tide)
|
|
|
|
::
|
|
|
|
%+ (corl zing turn) ~(tap by (~(gut by mem.tide) next ~))
|
|
|
|
|= [[=ship =dude] =@da]
|
|
|
|
^- (list card:agent:gall)
|
|
|
|
:~ (behn-rest ship dude next path da)
|
|
|
|
(send wave ship dude next path)
|
|
|
|
==
|
2023-02-01 23:52:30 +03:00
|
|
|
++ form
|
2023-02-01 19:05:18 +03:00
|
|
|
|= =tide
|
|
|
|
^+ tide
|
2023-02-01 23:52:30 +03:00
|
|
|
=/ max-rock=[=aeon =rock:lake] (fall (pry:rok rok.tide) *[key val]:rok)
|
|
|
|
=/ max-wave (fall (bind (ram:wav wav.tide) head) 0)
|
2023-02-01 19:05:18 +03:00
|
|
|
=. rok.tide
|
|
|
|
%+ gas:rok +<-:gas:rok
|
|
|
|
%- tab:rok :_ [~ +(rocks.rul.tide)]
|
2023-02-01 23:52:30 +03:00
|
|
|
?: ?| =(waves.rul.tide 0)
|
|
|
|
(lth max-wave (add aeon.max-rock waves.rul.tide))
|
|
|
|
==
|
|
|
|
rok.tide
|
|
|
|
%+ put:rok rok.tide
|
|
|
|
%+ roll (tab:wav wav.tide `aeon.max-rock max-wave)
|
|
|
|
|: [*[now=aeon =wave:lake] `[prev=aeon =rock:lake]`max-rock]
|
|
|
|
~| %aeon-awry
|
|
|
|
?> =(now +(prev))
|
|
|
|
[now (wash:lake rock wave)]
|
|
|
|
~| %rock-zero
|
2023-02-01 19:05:18 +03:00
|
|
|
tide(wav (lot:wav wav.tide (bind (ram:rok rok.tide) |=([r=@ *] (dec r))) ~))
|
|
|
|
::
|
|
|
|
++ read
|
2023-02-16 09:46:52 +03:00
|
|
|
^- (map paths rock:lake)
|
2023-02-01 19:05:18 +03:00
|
|
|
%- ~(run by pub)
|
|
|
|
|= =tide
|
|
|
|
=< rock
|
|
|
|
=/ snap=[=aeon =rock:lake] (fall (pry:rok rok.tide) *[key val]:rok)
|
|
|
|
%+ roll (tap:wav (lot:wav wav.tide `aeon.snap ~))
|
|
|
|
|= [[=aeon =wave:lake] =_snap]
|
|
|
|
?. =(aeon +(aeon.snap)) snap
|
|
|
|
[aeon (wash:lake rock.snap wave)]
|
|
|
|
::
|
|
|
|
++ apply
|
|
|
|
|= req=(request:poke paths)
|
2023-02-15 17:54:06 +03:00
|
|
|
|^ ^- (quip card:agent:gall _pub)
|
2023-02-01 19:05:18 +03:00
|
|
|
=/ =tide (~(gut by pub) path.req *tide)
|
2023-02-15 17:54:06 +03:00
|
|
|
?~ when.req
|
|
|
|
=/ last (fall (pry:rok rok.tide) *[=key =val]:rok)
|
|
|
|
:_ pub :_ ~
|
|
|
|
(mk-card key.last scry/rock/val.last)
|
|
|
|
?^ dat=(get:wav wav.tide u.when.req)
|
|
|
|
:_ pub :_ ~
|
|
|
|
(mk-card u.when.req scry/wave/u.dat)
|
|
|
|
?. (gth u.when.req key::(fall (ram:wav wav.tide) [key=+(u.when.req) **]))
|
|
|
|
:_ pub :_ ~
|
|
|
|
(mk-card u.when.req yore/~)
|
|
|
|
:- ~[(behn-s25 [dude u.when path]:req) (mk-card u.when.req nigh/~)]
|
|
|
|
%+ ~(put by pub) path.req
|
|
|
|
%= tide mem
|
|
|
|
%^ ~(put bi mem.tide) u.when.req [src.bowl dude.req]
|
|
|
|
(add ~s25 now.bowl)
|
|
|
|
==
|
2023-02-01 19:05:18 +03:00
|
|
|
::
|
2023-02-15 17:54:06 +03:00
|
|
|
++ mk-card
|
|
|
|
|= dat=_|2:*(response:poke lake paths)
|
|
|
|
=* mark (cat 3 %sss- name:lake)
|
|
|
|
=* when ?~(when.req %$ (scot %ud u.when.req))
|
|
|
|
:* %pass (zoom response/scry/(scot %p src.bowl)^dude.req^when^path.req)
|
|
|
|
%agent [src.bowl dude.req]
|
|
|
|
%poke mark result-type path.req dap.bowl dat
|
2023-02-01 19:05:18 +03:00
|
|
|
==
|
2023-02-15 17:54:06 +03:00
|
|
|
--
|
2023-02-01 19:05:18 +03:00
|
|
|
--
|
|
|
|
--
|