%dill, etc.

This commit is contained in:
C. Guy Yarvin 2015-12-05 17:43:57 -08:00
parent d6889cdf6a
commit 0f588c9546
4 changed files with 146 additions and 144 deletions

View File

@ -1,6 +1,6 @@
!: :: ames (4a), networking :: :: ames (4a), networking
:: ::
|= pit=vase |= pit+vase
=> =~ => =~
:: structures :: structures
|% |%

View File

@ -1,6 +1,6 @@
:: :: %behn, just a timer :: :: %behn, just a timer
!? 164 !? 164
!::: ::::
|= pit=vase |= pit=vase
=> =~ => =~
|% |%

View File

@ -1,4 +1,4 @@
!: ::
:: clay (4c), revision control :: clay (4c), revision control
:: ::
:: This is split in three top-level sections: structure definitions, main :: This is split in three top-level sections: structure definitions, main
@ -834,7 +834,7 @@
|= {pax+cage cay+cage} |= {pax+cage cay+cage}
?. ?=($path-hash p.pax) ?. ?=($path-hash p.pax)
~|(%patch-bad-path-mark !!) ~|(%patch-bad-path-mark !!)
[-< -> +]:[((hard ,[path lobe]) q.q.pax) cay] [-< -> +]:[((hard {path lobe}) q.q.pax) cay]
:: ~& %canned :: ~& %canned
:: ~& %checking-out :: ~& %checking-out
=. ank.dom (checkout-ankh:ze (mo cat)) =. ank.dom (checkout-ankh:ze (mo cat))
@ -2122,7 +2122,7 @@
`[pax +.a] `[pax +.a]
=. can.dal.dat p.can =. can.dal.dat p.can
=. old.dal.dat =. old.dal.dat
%- mo ^- (list ,[path ~]) %- mo ^- (list {path $~})
%+ murn (~(tap by q.bas.dat)) %+ murn (~(tap by q.bas.dat))
|= {pax+path lob+lobe} |= {pax+path lob+lobe}
?. =(~ (~(get by q.ali.dat) pax)) ?. =(~ (~(get by q.ali.dat) pax))
@ -2608,7 +2608,7 @@
~ ~
?: =(0 let.dom.u.dos) ?: =(0 let.dom.u.dos)
=+ cos=(mode-to-soba ~ s.bem q.q.hic r.q.hic) =+ cos=(mode-to-soba ~ s.bem q.q.hic r.q.hic)
=+ ^- [one=(list ,[path miso]) two=(list ,[path miso])] =+ ^- {one+(list {path miso}) two+(list {path miso})}
%+ skid cos %+ skid cos
|= {a+path b+miso} |= {a+path b+miso}
?& ?=($ins -.b) ?& ?=($ins -.b)

View File

@ -1,38 +1,38 @@
:: !:
:: dill (4d), terminal handling :: dill (4d), terminal handling
:: ::
|= pit=vase |= pit+vase
=> |% :: interface tiles => |% :: interface tiles
++ gill (pair ship term) :: general contact ++ gill (pair ship term) :: general contact
-- :: -- ::
=> |% :: console protocol => |% :: console protocol
++ all-axle ?(old-axle axle) :: ++ all-axle ?(old-axle axle) ::
++ old-axle :: all dill state ++ old-axle :: all dill state
$: %2 :: _: $2 ::
ore=(unit ship) :: identity once set ore+(unit ship) :: identity once set
hey=(unit duct) :: default duct hey+(unit duct) :: default duct
dug=(map duct axon) :: conversations dug+(map duct axon) :: conversations
== :: == ::
++ axle :: ++ axle ::
$: %3 :: _: $3 ::
ore=(unit ship) :: identity once set ore+(unit ship) :: identity once set
hey=(unit duct) :: default duct hey+(unit duct) :: default duct
dug=(map duct axon) :: conversations dug+(map duct axon) :: conversations
$= hef :: other weights _= hef :: other weights
$: a=(unit mass) :: _: a+(unit mass) ::
b=(unit mass) :: b+(unit mass) ::
c=(unit mass) :: c+(unit mass) ::
e=(unit mass) :: e+(unit mass) ::
f=(unit mass) :: f+(unit mass) ::
g=(unit mass) :: g+(unit mass) ::
== :: == ::
== :: == ::
++ axon :: dill per duct ++ axon :: dill per duct
$: ram=term :: console program _: ram+term :: console program
tem=(unit (list dill-belt)) :: pending, reverse tem+(unit (list dill-belt)) :: pending, reverse
wid=_80 :: terminal width wid+__(80) :: terminal width
pos=@ud :: cursor position pos+@ud :: cursor position
see=(list ,@c) :: current line see+(list @c) :: current line
== :: == ::
-- => :: -- => ::
|% :: protocol below |% :: protocol below
@ -41,118 +41,119 @@
-- => :: -- => ::
|% :: protocol outward |% :: protocol outward
++ mess :: ++ mess ::
$% [%dill-belt p=(hypo dill-belt)] :: _% {$dill-belt p+(hypo dill-belt)} ::
== :: == ::
++ move ,[p=duct q=(mold note gift)] :: local move ++ move ,[p=duct q=(mold note gift)] :: local move
++ note-ames :: weird ames move ++ note-ames :: weird ames move
$% [%make p=(unit ,@t) q=@ud r=@ s=?] :: _% {$make p+(unit @t) q+@ud r+@ s+?} ::
[%sith p=@p q=@uw r=?] :: {$sith p+@p q+@uw r+?} ::
== :: == ::
++ note-clay :: ++ note-clay ::
$% [%merg p=@p q=@tas r=@p s=@tas t=case u=germ] :: merge desks _% {$merg p+@p q+@tas r+@p s+@tas t+case u+germ} :: merge desks
[%warp p=sock q=riff] :: wait for clay, hack {$warp p+sock q+riff} :: wait for clay hack
== :: == ::
++ note-dill :: note to self, odd ++ note-dill :: note to self, odd
$% [%crud p=@tas q=(list tank)] :: _% {$crud p+@tas q+(list tank)} ::
[%heft ~] :: {$heft $~} ::
[%init p=ship] :: {$init p+ship} ::
[%text p=tape] :: {$text p+tape} ::
[%veer p=@ta q=path r=@t] :: install vane {$veer p+@ta q+path r+@t} :: install vane
[%vega p=path] :: reboot by path {$vega p+path} :: reboot by path
[%verb ~] :: verbose mode {$verb $~} :: verbose mode
== :: == ::
++ note-gall :: ++ note-gall ::
$% [%conf dock %load ship desk] :: _% {$conf dock $load ship desk} ::
[%deal p=sock q=cush] :: {$deal p+sock q+cush} ::
== :: == ::
++ note :: out request $-> ++ note :: out request $->
$? [?(%a %b %c %e %f %g) %wegh ~] :: _? {?($a $b $c $e $f $g) $wegh $~} ::
$% [%a note-ames] :: _% {$a note-ames} ::
[%c note-clay] :: {$c note-clay} ::
[%d note-dill] :: {$d note-dill} ::
[%g note-gall] :: {$g note-gall} ::
== == :: == == ::
++ sign-ames :: ++ sign-ames ::
$% [%nice ~] :: _% {$nice $~} ::
[%init p=ship] :: {$init p+ship} ::
== :: == ::
++ sign-gall :: see %gall ++ sign-gall :: see %gall
$% [%onto p=(unit tang)] :: _% {$onto p+(unit tang)} ::
== :: == ::
++ sign-clay :: ++ sign-clay ::
$% [%mere p=(each (set path) (pair term tang))] :: _% {$mere p+(each (set path) (pair term tang))} ::
[%note p=@tD q=tank] :: {$note p+@tD q+tank} ::
[%writ p=riot] :: {$writ p+riot} ::
== :: == ::
++ sign-dill :: ++ sign-dill ::
$% [%blit p=(list blit)] :: _% {$blit p+(list blit)} ::
== :: == ::
++ sign-gall :: ++ sign-gall ::
$% [%onto p=(each suss tang)] :: _% {$onto p+(each suss tang)} ::
[%unto p=cuft] :: {$unto p+cuft} ::
== :: == ::
++ sign :: in result $<- ++ sign :: in result $<-
$? [?(%a %b %c %e %f %g) %mass p=mass] :: _? {?($a $b $c $e $f $g) $mass p+mass} ::
$% [%a sign-ames] :: _% {$a sign-ames} ::
[%c sign-clay] :: {$c sign-clay} ::
[%d sign-dill] :: {$d sign-dill} ::
[%g sign-gall] :: {$g sign-gall} ::
== == :: == == ::
:::::::: :: dill tiles :::::::: :: dill tiles
-- --
=| all=axle =| all+axle
|= [now=@da eny=@ ski=sled] :: current invocation |= {now+@da eny+@ ski+sled} :: current invocation
=> |% => |%
++ as :: per cause ++ as :: per cause
|_ $: [moz=(list move) hen=duct our=ship] |_ $^
$: {moz+(list move) hen+duct our+ship}
axon axon
== ==
++ abet :: resolve ++ abet :: resolve
^- [(list move) axle] ^- {(list move) axle}
[(flop moz) all(dug (~(put by dug.all) hen +<+))] [(flop moz) all(dug (~(put by dug.all) hen +<+))]
:: ::
++ call :: receive input ++ call :: receive input
|= kyz=kiss |= kyz+kiss
^+ +> ^+ +>
?+ -.kyz ~& [%strange-kiss -.kyz] +> ?+ -.kyz ~& [%strange-kiss -.kyz] +>
%flow +> $flow +>
%harm +> $harm +>
%hail (send %hey ~) $hail (send %hey ~)
%belt (send `dill-belt`p.kyz) $belt (send `dill-belt`p.kyz)
%text (from %out (tuba p.kyz)) $text (from %out (tuba p.kyz))
%crud :: (send `dill-belt`[%cru p.kyz q.kyz]) $crud :: (send `dill-belt`[%cru p.kyz q.kyz])
(crud p.kyz q.kyz) (crud p.kyz q.kyz)
%blew (send %rez p.p.kyz q.p.kyz) $blew (send %rez p.p.kyz q.p.kyz)
%heft heft $heft heft
%tick =+ ^= ges ^- gens $tick =+ ^= ges ^- gens
^- gens ^- gens
:- %en :- %en
=+ can=(clan p.kyz) =+ can=(clan p.kyz)
?- can ?- can
%czar [%czar ~] $czar [%czar ~]
%duke [%duke %anon ~] $duke [%duke %anon ~]
%earl [%earl (scot %p p.kyz)] $earl [%earl (scot %p p.kyz)]
%king :- %king $king :- %king
?: =(~doznec p.kyz) :: so old tickets work ?: =(~doznec p.kyz) :: so old tickets work
'Urban Republic' 'Urban Republic'
(scot %p p.kyz) (scot %p p.kyz)
%pawn [%pawn ~] $pawn [%pawn ~]
== ==
=+ yen=(scot %p (shax :(mix %ticket eny now))) =+ yen=(scot %p (shax :(mix %ticket eny now)))
=+ ^= beg ^- [his=@p tic=@p yen=@t ges=gens] =+ ^= beg ^- {his+@p tic+@p yen+@t ges+gens}
[p.kyz q.kyz yen ges] [p.kyz q.kyz yen ges]
=+ cmd=[%hood %poke `cage`[%helm-begin !>(beg)]] =+ cmd=[%hood %poke `cage`[%helm-begin !>(beg)]]
%= +>.$ %= +>.$
moz moz
:_(moz [hen %pass ~ %g %deal [our our] cmd]) :_(moz [hen %pass ~ %g %deal [our our] cmd])
== ==
%veer (dump kyz) $veer (dump kyz)
%vega (dump kyz) $vega (dump kyz)
%verb (dump kyz) $verb (dump kyz)
== ==
:: ::
++ crud ++ crud
|= [err=@tas tac=(list tank)] |= {err+@tas tac+(list tank)}
=+ ^= wol ^- wall =+ ^= wol ^- wall
:- (trip err) :- (trip err)
(zing (turn (flop tac) |=(a=tank (~(win re a) [0 wid])))) (zing (turn (flop tac) |=(a=tank (~(win re a) [0 wid]))))
@ -161,33 +162,33 @@
$(wol t.wol, +>.^$ (from %out (tuba i.wol))) $(wol t.wol, +>.^$ (from %out (tuba i.wol)))
:: ::
++ dump :: pass down to hey ++ dump :: pass down to hey
|= git=gift |= git+gift
?> ?=(^ hey.all) ?> ?=(^ hey.all)
+>(moz [[u.hey.all %give git] moz]) +>(moz [[u.hey.all %give git] moz])
:: ::
++ done :: return gift ++ done :: return gift
|= git=gift |= git+gift
+>(moz :_(moz [hen %give git])) +>(moz :_(moz [hen %give git]))
:: ::
++ from :: receive belt ++ from :: receive belt
|= bit=dill-blit |= bit+dill-blit
^+ +> ^+ +>
?: ?=(%mor -.bit) ?: ?=($mor -.bit)
|- ^+ +>.^$ |- ^+ +>.^$
?~ p.bit +>.^$ ?~ p.bit +>.^$
$(p.bit t.p.bit, +>.^$ ^$(bit i.p.bit)) $(p.bit t.p.bit, +>.^$ ^$(bit i.p.bit))
?: ?=(%out -.bit) ?: ?=($out -.bit)
%+ done %blit %+ done %blit
:~ [%lin p.bit] :~ [%lin p.bit]
[%mor ~] [%mor ~]
[%lin see] [%lin see]
[%hop pos] [%hop pos]
== ==
?: ?=(%pro -.bit) ?: ?=($pro -.bit)
(done(see p.bit) %blit [[%lin p.bit] [%hop pos] ~]) (done(see p.bit) %blit [[%lin p.bit] [%hop pos] ~])
?: ?=(%hop -.bit) ?: ?=($hop -.bit)
(done(pos p.bit) %blit [bit ~]) (done(pos p.bit) %blit [bit ~])
?: ?=(%qit -.bit) ?: ?=($qit -.bit)
(dump %logo ~) (dump %logo ~)
(done %blit [bit ~]) (done %blit [bit ~])
:: ::
@ -211,7 +212,7 @@
=. tem ~ =. tem ~
=. moz :_(moz [hen %pass / %c %merg our %home our %base da/now %init]) =. moz :_(moz [hen %pass / %c %merg our %home our %base da/now %init])
=. moz :_(moz [hen %pass ~ %g %conf [[our ram] %load our %home]]) =. moz :_(moz [hen %pass ~ %g %conf [[our ram] %load our %home]])
=. +> ?: ?=(%czar can) +> =. +> ?: ?=($czar can) +>
(sync %base (sein our) %kids) (sync %base (sein our) %kids)
=. +> (sync %home our %base) =. +> (sync %home our %base)
=. +> ?. ?=(?(%duke %king %czar) can) +> =. +> ?. ?=(?(%duke %king %czar) can) +>
@ -223,7 +224,7 @@
$(myt t.myt, +>+ (send i.myt)) $(myt t.myt, +>+ (send i.myt))
:: ::
++ into :: preinitialize ++ into :: preinitialize
|= gyl=(list gill) |= gyl+(list gill)
%_ +> %_ +>
tem `(turn gyl |=(a=gill [%yow a])) tem `(turn gyl |=(a=gill [%yow a]))
moz moz
@ -237,7 +238,7 @@
== ==
:: ::
++ send :: send action ++ send :: send action
|= bet=dill-belt |= bet+dill-belt
?^ tem ?^ tem
+>(tem `[bet u.tem]) +>(tem `[bet u.tem])
%_ +> %_ +>
@ -252,7 +253,7 @@
== ==
:: ::
++ sync ++ sync
|= syn=[desk ship desk] |= syn+{desk ship desk}
%_ +>.$ %_ +>.$
moz moz
:_ moz :_ moz
@ -277,50 +278,50 @@
== ==
:: ::
++ take :: receive ++ take :: receive
|= sih=sign |= sih+sign
^+ +> ^+ +>
?- sih ?- sih
[?(%a %b %c %e %f %g) %mass *] {?($a $b $c $e $f $g) $mass *}
(wegt -.sih p.sih) (wegt -.sih p.sih)
:: ::
[%a %nice *] {$a $nice *}
:: ~& [%take-nice-ames sih] :: ~& [%take-nice-ames sih]
+> +>
:: ::
[%a %init *] {$a $init *}
+>(moz :_(moz [hen %give +.sih])) +>(moz :_(moz [hen %give +.sih]))
:: ::
[%c %mere *] {$c $mere *}
?: ?=(%& -.p.sih) ?: ?=($& -.p.sih)
+>.$ +>.$
(mean >%dill-mere-fail< >p.p.p.sih< q.p.p.sih) (mean >%dill-mere-fail< >p.p.p.sih< q.p.p.sih)
:: ::
[%g %onto *] {$g $onto *}
:: ~& [%take-gall-onto +>.sih] :: ~& [%take-gall-onto +>.sih]
?- -.+>.sih ?- -.+>.sih
%| (crud %onto p.p.+>.sih) {$|} (crud %onto p.p.+>.sih)
%& (done %blit [%lin (tuba "{<p.p.sih>}")]~) {$&} (done %blit [%lin (tuba "{<p.p.sih>}")]~)
== ==
:: ::
[%g %unto *] {$g $unto *}
:: ~& [%take-gall-unto +>.sih] :: ~& [%take-gall-unto +>.sih]
?- -.+>.sih ?- -.+>.sih
%coup ?~(p.p.+>.sih +>.$ (crud %coup u.p.p.+>.sih)) $coup ?~(p.p.+>.sih +>.$ (crud %coup u.p.p.+>.sih))
%quit peer $quit peer
%reap ?~ p.p.+>.sih $reap ?~ p.p.+>.sih
+>.$ +>.$
(dump:(crud %reap u.p.p.+>.sih) %logo ~) (dump:(crud %reap u.p.p.+>.sih) %logo ~)
%diff pump:(from ((hard dill-blit) q:`vase`+>+>.sih)) $diff pump:(from ((hard dill-blit) q:`vase`+>+>.sih))
%doff !! $doff !!
== ==
:: ::
[%c %note *] {$c $note *}
(from %out (tuba p.sih ' ' ~(ram re q.sih))) (from %out (tuba p.sih ' ' ~(ram re q.sih)))
:: ::
[%c %writ *] {$c $writ *}
init init
:: ::
[%d %blit *] {$d $blit *}
(done +.sih) (done +.sih)
== ==
:: ::
@ -332,16 +333,16 @@
== ==
:: ::
++ wegt ++ wegt
|= [lal=?(%a %b %c %e %f %g) mas=mass] |= {lal+?($a $b $c $e $f $g) mas+mass}
^+ +> ^+ +>
=. hef.all =. hef.all
?- lal ?- lal
%a ~?(?=(^ a.hef.all) %double-mass-a hef.all(a `mas)) $a ~?(?=(^ a.hef.all) %double-mass-a hef.all(a `mas))
%b ~?(?=(^ b.hef.all) %double-mass-b hef.all(b `mas)) $b ~?(?=(^ b.hef.all) %double-mass-b hef.all(b `mas))
%c ~?(?=(^ c.hef.all) %double-mass-c hef.all(c `mas)) $c ~?(?=(^ c.hef.all) %double-mass-c hef.all(c `mas))
%e ~?(?=(^ e.hef.all) %double-mass-e hef.all(e `mas)) $e ~?(?=(^ e.hef.all) %double-mass-e hef.all(e `mas))
%f ~?(?=(^ f.hef.all) %double-mass-f hef.all(f `mas)) $f ~?(?=(^ f.hef.all) %double-mass-f hef.all(f `mas))
%g ~?(?=(^ g.hef.all) %double-mass-g hef.all(g `mas)) $g ~?(?=(^ g.hef.all) %double-mass-g hef.all(g `mas))
== ==
?. ?& ?=(^ a.hef.all) ?. ?& ?=(^ a.hef.all)
?=(^ b.hef.all) ?=(^ b.hef.all)
@ -358,12 +359,12 @@
-- --
:: ::
++ ax :: make ++as ++ ax :: make ++as
|= [hen=duct kyz=kiss] :: |= {hen+duct kyz+kiss} ::
?~ ore.all ~ ?~ ore.all ~
=+ nux=(~(get by dug.all) hen) =+ nux=(~(get by dug.all) hen)
?^ nux ?^ nux
(some ~(. as [~ hen u.ore.all] u.nux)) (some ~(. as [~ hen u.ore.all] u.nux))
?. ?=(%flow -.kyz) ~ ?. ?=($flow -.kyz) ~
%- some %- some
%. q.kyz %. q.kyz
%~ into as %~ into as
@ -377,32 +378,33 @@
-- --
|% :: poke/peek pattern |% :: poke/peek pattern
++ call :: handle request ++ call :: handle request
|= $: hen=duct |= $^
hic=(hypo (hobo kiss)) _: hen+duct
hic+(hypo (hobo kiss))
== ==
^- [p=(list move) q=_..^$] ^+ [p=*(list move) q=..^$]
=> %= . :: XX temporary => %= . :: XX temporary
q.hic q.hic
^- kiss ^- kiss
?: ?=(%soft -.q.hic) ?: ?=($soft -.q.hic)
:: ~& [%dill-call-soft (,@tas `*`-.p.q.hic)] :: ~& [%dill-call-soft (@tas `*`-.p.q.hic)]
((hard kiss) p.q.hic) ((hard kiss) p.q.hic)
?: (~(nest ut -:!>(*kiss)) | p.hic) q.hic ?: (~(nest ut -:!>(*kiss)) | p.hic) q.hic
~& [%dill-call-flub (,@tas `*`-.q.hic)] ~& [%dill-call-flub (@tas `*`-.q.hic)]
((hard kiss) q.hic) ((hard kiss) q.hic)
== ==
?: ?=(%boot -.q.hic) ?: ?=($boot -.q.hic)
:_(..^$ [hen %pass ~ (note %a p.q.hic)]~) :_(..^$ [hen %pass ~ (note %a p.q.hic)]~)
?: ?=(%flog -.q.hic) ?: ?=($flog -.q.hic)
:: ~& [%dill-flog +.q.hic] :: ~& [%dill-flog +.q.hic]
?: ?=([%crud %hax-init [%leaf *] ~] p.q.hic) ?: ?=({$crud $hax-init {$leaf *} $~} p.q.hic)
=+ him=(slav %p (crip p.i.q.p.q.hic)) =+ him=(slav %p (crip p.i.q.p.q.hic))
:_(..^$ ?~(hey.all ~ [u.hey.all %give %init him]~)) :_(..^$ ?~(hey.all ~ [u.hey.all %give %init him]~))
?: ?=([%crud %hax-heft ~] p.q.hic) ?: ?=({$crud $hax-heft $~} p.q.hic)
:_(..^$ ?~(hey.all ~ [u.hey.all %slip %d %heft ~]~)) :_(..^$ ?~(hey.all ~ [u.hey.all %slip %d %heft ~]~))
:_(..^$ ?~(hey.all ~ [u.hey.all %slip %d p.q.hic]~)) :_(..^$ ?~(hey.all ~ [u.hey.all %slip %d p.q.hic]~))
=. hey.all ?^(hey.all hey.all `hen) =. hey.all ?^(hey.all hey.all `hen)
?: ?=(%init -.q.hic) ?: ?=($init -.q.hic)
:: ~& [%call-init hen] :: ~& [%call-init hen]
?: =(ore.all `p.q.hic) ?: =(ore.all `p.q.hic)
[[hen %give q.hic]~ ..^$] [[hen %give q.hic]~ ..^$]
@ -420,30 +422,30 @@
[moz ..^$] [moz ..^$]
:: ::
++ doze ++ doze
|= [now=@da hen=duct] |= {now+@da hen+duct}
^- (unit ,@da) ^- (unit @da)
~ ~
:: ::
++ load :: trivial ++ load :: trivial
|= old=all-axle |= old+all-axle
?: ?=(%2 -.old) ?: ?=($2 -.old)
$(old [%3 ore hey dug ~ ~ ~ ~ ~ ~]:old) $(old [%3 ore hey dug ~ ~ ~ ~ ~ ~]:old)
..^$(all old) ..^$(all old)
:: |= old=* :: diable :: |= old=* :: diable
:: ..^$(ore.all `~zod) :: ..^$(ore.all `~zod)
:: ::
++ scry ++ scry
|= [fur=(unit (set monk)) ren=@tas his=ship syd=desk lot=coin tyl=path] |= {fur+(unit (set monk)) ren+@tas his+ship syd+desk lot+coin tyl+path}
^- (unit (unit cage)) ^- (unit (unit cage))
[~ ~] [~ ~]
:: ::
++ stay all ++ stay all
:: ::
++ take :: process move ++ take :: process move
|= [tea=wire hen=duct hin=(hypo sign)] |= {tea+wire hen+duct hin+(hypo sign)}
^- [p=(list move) q=_..^$] ^+ [p=*(list move) q=..^$]
?: =(~ ore.all) ?: =(~ ore.all)
?: ?=([%a %init *] q.hin) ?: ?=({$a $init *} q.hin)
:: ~& [%take-init hen] :: ~& [%take-init hen]
=. hey.all ?^(hey.all hey.all `hen) =. hey.all ?^(hey.all hey.all `hen)
[[[hen %give +.q.hin] ~] ..^$] [[[hen %give +.q.hin] ~] ..^$]