urbit/arvo/dill.hoon

463 lines
17 KiB
Plaintext
Raw Normal View History

2015-12-29 01:01:44 +03:00
!:
2015-05-08 22:43:11 +03:00
:: dill (4d), terminal handling
2013-09-29 00:21:18 +04:00
::
2015-12-20 23:50:45 +03:00
|= pit/vase
2014-06-09 01:27:04 +04:00
=> |% :: interface tiles
2015-03-23 01:46:42 +03:00
++ gill (pair ship term) :: general contact
2015-03-18 19:40:40 +03:00
-- ::
=> |% :: console protocol
2015-05-19 04:16:32 +03:00
++ all-axle ?(old-axle axle) ::
++ old-axle :: all dill state
2015-12-14 10:58:14 +03:00
$: $2 ::
2015-12-20 23:50:45 +03:00
ore/(unit ship) :: identity once set
hey/(unit duct) :: default duct
dug/(map duct axon) :: conversations
2015-05-19 04:16:32 +03:00
== ::
++ axle ::
2015-12-14 10:58:14 +03:00
$: $3 ::
2015-12-20 23:50:45 +03:00
ore/(unit ship) :: identity once set
hey/(unit duct) :: default duct
dug/(map duct axon) :: conversations
2015-12-14 10:58:14 +03:00
$= hef :: other weights
2015-12-20 23:50:45 +03:00
$: a/(unit mass) ::
b/(unit mass) ::
c/(unit mass) ::
e/(unit mass) ::
f/(unit mass) ::
g/(unit mass) ::
2015-05-19 04:16:32 +03:00
== ::
2015-05-06 22:55:47 +03:00
== ::
2015-03-18 19:40:40 +03:00
++ axon :: dill per duct
2015-12-20 23:50:45 +03:00
$: ram/term :: console program
tem/(unit (list dill-belt)) :: pending, reverse
wid/_80 :: terminal width
pos/@ud :: cursor position
see/(list @c) :: current line
2015-03-18 19:40:40 +03:00
== ::
-- => ::
|% :: protocol below
2015-05-12 23:10:22 +03:00
++ gift gift-dill :: out result <-$
2015-05-19 04:16:32 +03:00
++ kiss kiss-dill :: in request ->$
2015-03-18 19:40:40 +03:00
-- => ::
|% :: protocol outward
++ mess ::
2015-12-20 23:50:45 +03:00
$% {$dill-belt p/(hypo dill-belt)} ::
2015-03-18 19:40:40 +03:00
== ::
2015-12-20 23:50:45 +03:00
++ move {p/duct q/(mold note gift)} :: local move
2015-03-18 19:40:40 +03:00
++ note-ames :: weird ames move
2015-12-20 23:50:45 +03:00
$% {$make p/(unit @t) q/@ud r/@ s/?} ::
{$sith p/@p q/@uw r/?} ::
2015-03-18 19:40:40 +03:00
== ::
2015-04-30 01:48:45 +03:00
++ note-clay ::
2015-12-20 23:50:45 +03:00
$% {$merg p/@p q/@tas r/@p s/@tas t/case u/germ} :: merge desks
{$warp p/sock q/riff} :: wait for clay hack
2015-03-18 19:40:40 +03:00
== ::
++ note-dill :: note to self, odd
2015-12-20 23:50:45 +03:00
$% {$crud p/@tas q/(list tank)} ::
2015-12-06 04:43:57 +03:00
{$heft $~} ::
2015-12-20 23:50:45 +03:00
{$init p/ship} ::
{$text p/tape} ::
{$veer p/@ta q/path r/@t} :: install vane
{$vega p/path} :: reboot by path
2015-12-06 04:43:57 +03:00
{$verb $~} :: verbose mode
2015-03-18 19:40:40 +03:00
== ::
2015-05-10 01:55:05 +03:00
++ note-gall ::
2015-12-14 10:58:14 +03:00
$% {$conf dock $load ship desk} ::
2015-12-20 23:50:45 +03:00
{$deal p/sock q/cush} ::
2015-03-18 19:40:40 +03:00
== ::
2015-05-08 22:43:11 +03:00
++ note :: out request $->
2015-12-14 10:58:14 +03:00
$? {?($a $b $c $e $f $g) $wegh $~} ::
$% {$a note-ames} ::
2015-12-06 04:43:57 +03:00
{$c note-clay} ::
{$d note-dill} ::
{$g note-gall} ::
2015-05-19 04:16:32 +03:00
== == ::
2015-03-18 19:40:40 +03:00
++ sign-ames ::
2015-12-14 10:58:14 +03:00
$% {$nice $~} ::
2015-12-20 23:50:45 +03:00
{$init p/ship} ::
2015-03-18 19:40:40 +03:00
== ::
2015-05-10 01:55:05 +03:00
++ sign-gall :: see %gall
2015-12-20 23:50:45 +03:00
$% {$onto p/(unit tang)} ::
2015-05-08 22:43:11 +03:00
== ::
2015-03-18 19:40:40 +03:00
++ sign-clay ::
2015-12-20 23:50:45 +03:00
$% {$mere p/(each (set path) (pair term tang))} ::
{$note p/@tD q/tank} ::
{$writ p/riot} ::
2015-03-18 19:40:40 +03:00
== ::
2015-03-19 01:01:47 +03:00
++ sign-dill ::
2015-12-20 23:50:45 +03:00
$% {$blit p/(list blit)} ::
2015-03-19 01:01:47 +03:00
== ::
2015-03-18 19:40:40 +03:00
++ sign-gall ::
2015-12-20 23:50:45 +03:00
$% {$onto p/(each suss tang)} ::
{$unto p/cuft} ::
2015-03-18 19:40:40 +03:00
== ::
2014-06-22 09:49:10 +04:00
++ sign :: in result $<-
2015-12-20 23:50:45 +03:00
$? {?($a $b $c $e $f $g) $mass p/mass} ::
2015-12-14 10:58:14 +03:00
$% {$a sign-ames} ::
2015-12-06 04:43:57 +03:00
{$c sign-clay} ::
{$d sign-dill} ::
{$g sign-gall} ::
2015-05-19 04:16:32 +03:00
== == ::
2014-06-09 01:27:04 +04:00
:::::::: :: dill tiles
2015-03-18 19:40:40 +03:00
--
2015-12-20 23:50:45 +03:00
=| all/axle
|= {now/@da eny/@ ski/sley} :: current invocation
2015-03-18 19:40:40 +03:00
=> |%
++ as :: per cause
2015-12-20 23:50:45 +03:00
|_ $: {moz/(list move) hen/duct our/ship}
2015-03-18 19:40:40 +03:00
axon
==
2015-03-18 19:40:40 +03:00
++ abet :: resolve
2015-12-06 04:43:57 +03:00
^- {(list move) axle}
2015-03-18 19:40:40 +03:00
[(flop moz) all(dug (~(put by dug.all) hen +<+))]
2013-09-29 00:21:18 +04:00
::
2015-03-18 19:40:40 +03:00
++ call :: receive input
2015-12-20 23:50:45 +03:00
|= kyz/kiss
2015-03-18 19:40:40 +03:00
^+ +>
?+ -.kyz ~& [%strange-kiss -.kyz] +>
2015-12-06 04:43:57 +03:00
$flow +>
$harm +>
$hail (send %hey ~)
$belt (send `dill-belt`p.kyz)
$text (from %out (tuba p.kyz))
$crud :: (send `dill-belt`[%cru p.kyz q.kyz])
2015-03-19 01:01:47 +03:00
(crud p.kyz q.kyz)
2015-12-06 04:43:57 +03:00
$blew (send %rez p.p.kyz q.p.kyz)
$heft heft
$tick =+ ^= ges ^- gens
2015-05-19 21:38:23 +03:00
^- gens
:- %en
=+ can=(clan p.kyz)
?- can
2015-12-06 04:43:57 +03:00
$czar [%czar ~]
$duke [%duke %anon ~]
$earl [%earl (scot %p p.kyz)]
$king :- %king
2015-05-19 21:38:23 +03:00
?: =(~doznec p.kyz) :: so old tickets work
'Urban Republic'
(scot %p p.kyz)
2015-12-06 04:43:57 +03:00
$pawn [%pawn ~]
2015-05-19 21:38:23 +03:00
==
=+ yen=(scot %p (shax :(mix %ticket eny now)))
2015-12-20 23:50:45 +03:00
=+ ^= beg ^- {his/@p tic/@p yen/@t ges/gens}
2015-05-19 21:38:23 +03:00
[p.kyz q.kyz yen ges]
2015-07-14 22:34:59 +03:00
=+ cmd=[%hood %poke `cage`[%helm-begin !>(beg)]]
2015-05-19 21:38:23 +03:00
%= +>.$
moz
2015-07-14 22:34:59 +03:00
:_(moz [hen %pass ~ %g %deal [our our] cmd])
2015-05-19 21:38:23 +03:00
==
2015-12-06 04:43:57 +03:00
$veer (dump kyz)
$vega (dump kyz)
$verb (dump kyz)
2013-09-29 00:21:18 +04:00
==
::
2015-03-19 01:01:47 +03:00
++ crud
2015-12-20 23:50:45 +03:00
|= {err/@tas tac/(list tank)}
2015-03-19 01:01:47 +03:00
=+ ^= wol ^- wall
:- (trip err)
2015-12-20 23:50:45 +03:00
(zing (turn (flop tac) |=(a/tank (~(win re a) [0 wid]))))
2015-03-19 01:01:47 +03:00
|- ^+ +>.^$
?~ wol +>.^$
$(wol t.wol, +>.^$ (from %out (tuba i.wol)))
2013-09-29 00:21:18 +04:00
::
2015-03-18 19:40:40 +03:00
++ dump :: pass down to hey
2015-12-20 23:50:45 +03:00
|= git/gift
2015-03-18 19:40:40 +03:00
?> ?=(^ hey.all)
+>(moz [[u.hey.all %give git] moz])
2013-09-29 00:21:18 +04:00
::
2015-03-18 19:40:40 +03:00
++ done :: return gift
2015-12-20 23:50:45 +03:00
|= git/gift
2015-03-18 19:40:40 +03:00
+>(moz :_(moz [hen %give git]))
2015-02-09 00:22:33 +03:00
::
2015-03-18 19:40:40 +03:00
++ from :: receive belt
2015-12-20 23:50:45 +03:00
|= bit/dill-blit
2015-03-18 19:40:40 +03:00
^+ +>
2015-12-06 04:43:57 +03:00
?: ?=($mor -.bit)
2015-03-25 01:56:11 +03:00
|- ^+ +>.^$
?~ p.bit +>.^$
$(p.bit t.p.bit, +>.^$ ^$(bit i.p.bit))
2015-12-06 04:43:57 +03:00
?: ?=($out -.bit)
2015-03-18 19:40:40 +03:00
%+ done %blit
:~ [%lin p.bit]
[%mor ~]
[%lin see]
[%hop pos]
2013-09-29 00:21:18 +04:00
==
2015-12-06 04:43:57 +03:00
?: ?=($pro -.bit)
2015-03-18 19:40:40 +03:00
(done(see p.bit) %blit [[%lin p.bit] [%hop pos] ~])
2015-12-06 04:43:57 +03:00
?: ?=($hop -.bit)
2015-03-18 19:40:40 +03:00
(done(pos p.bit) %blit [bit ~])
2015-12-06 04:43:57 +03:00
?: ?=($qit -.bit)
2015-04-01 23:56:43 +03:00
(dump %logo ~)
2015-03-18 19:40:40 +03:00
(done %blit [bit ~])
2013-09-29 00:21:18 +04:00
::
2015-05-19 04:16:32 +03:00
++ heft
%_ .
moz
:* [hen %pass /heft/ames %a %wegh ~]
2015-07-02 00:28:09 +03:00
[hen %pass /heft/behn %b %wegh ~]
2015-05-19 04:16:32 +03:00
[hen %pass /heft/clay %c %wegh ~]
[hen %pass /heft/eyre %e %wegh ~]
[hen %pass /heft/ford %f %wegh ~]
[hen %pass /heft/gall %g %wegh ~]
moz
==
==
::
2015-03-18 19:40:40 +03:00
++ init :: initialize
2015-05-17 05:37:36 +03:00
~& [%dill-init our ram]
2015-03-18 19:40:40 +03:00
=+ myt=(flop (need tem))
=+ can=(clan our)
2015-03-18 19:40:40 +03:00
=. tem ~
2015-12-21 00:16:39 +03:00
=. moz :_(moz [hen %pass / %c %merg our %home our %base da+now %init])
2015-05-14 04:13:13 +03:00
=. moz :_(moz [hen %pass ~ %g %conf [[our ram] %load our %home]])
2016-02-04 03:14:35 +03:00
=. +> ?: ?=(?($czar $pawn) can) +>
2015-06-03 21:06:44 +03:00
(sync %base (sein our) %kids)
=. +> (sync %home our %base)
=. +> ?. ?=(?($duke $king $czar) can) +>
2015-06-03 21:06:44 +03:00
(sync %kids our %base)
2015-09-17 01:39:11 +03:00
=. +> autoload
2015-05-20 02:09:37 +03:00
=. +> peer
|- ^+ +>+
?~ myt +>+
$(myt t.myt, +>+ (send i.myt))
2015-03-18 19:40:40 +03:00
::
++ into :: preinitialize
2015-12-20 23:50:45 +03:00
|= gyl/(list gill)
2015-03-18 19:40:40 +03:00
%_ +>
2015-12-20 23:50:45 +03:00
tem `(turn gyl |=(a/gill [%yow a]))
2015-03-18 19:40:40 +03:00
moz
:_ moz
:* hen
2015-04-30 01:48:45 +03:00
%pass
/
%c
[%warp [our our] %base `[%sing %y [%ud 1] /]]
2013-09-29 00:21:18 +04:00
==
==
::
2015-03-18 19:40:40 +03:00
++ send :: send action
2015-12-20 23:50:45 +03:00
|= bet/dill-belt
2015-03-18 19:40:40 +03:00
?^ tem
+>(tem `[bet u.tem])
%_ +>
moz
:_ moz
2015-05-10 01:55:05 +03:00
[hen %pass ~ %g %deal [our our] ram %poke [%dill-belt -:!>(bet) bet]]
2013-09-29 00:21:18 +04:00
==
2015-05-20 02:08:35 +03:00
++ peer
%_ .
moz
:_(moz [hen %pass ~ %g %deal [our our] ram %peer /drum])
==
2015-03-18 19:40:40 +03:00
::
2015-06-03 21:06:44 +03:00
++ sync
2015-12-20 23:50:45 +03:00
|= syn/{desk ship desk}
2015-06-03 21:06:44 +03:00
%_ +>.$
moz
:_ moz
2015-09-17 01:39:11 +03:00
:* hen %pass /sync %g %deal [our our]
ram %poke %hood-sync -:!>(syn) syn
==
==
::
++ autoload
%_ .
moz
:_ moz
:* hen %pass /autoload %g %deal [our our]
ram %poke %kiln-start-autoload [%atom %n `~] ~
2015-09-17 01:39:11 +03:00
==
2015-06-03 21:06:44 +03:00
==
::
2015-05-08 22:43:11 +03:00
++ pump :: send diff ack
%_ .
moz
2015-05-10 01:55:05 +03:00
:_(moz [hen %pass ~ %g %deal [our our] ram %pump ~])
2015-05-06 22:55:47 +03:00
==
::
2015-03-18 19:40:40 +03:00
++ take :: receive
2015-12-20 23:50:45 +03:00
|= sih/sign
2015-03-18 19:40:40 +03:00
^+ +>
?- sih
2015-12-06 04:43:57 +03:00
{?($a $b $c $e $f $g) $mass *}
2015-05-19 04:16:32 +03:00
(wegt -.sih p.sih)
::
2015-12-06 04:43:57 +03:00
{$a $nice *}
2015-03-18 19:40:40 +03:00
:: ~& [%take-nice-ames sih]
+>
::
2015-12-06 04:43:57 +03:00
{$a $init *}
2015-03-18 19:40:40 +03:00
+>(moz :_(moz [hen %give +.sih]))
2015-04-30 01:48:45 +03:00
::
2015-12-06 04:43:57 +03:00
{$c $mere *}
?: ?=($& -.p.sih)
2015-04-30 01:48:45 +03:00
+>.$
2015-06-17 00:01:07 +03:00
(mean >%dill-mere-fail< >p.p.p.sih< q.p.p.sih)
2015-05-08 22:43:11 +03:00
::
2015-12-06 04:43:57 +03:00
{$g $onto *}
2015-05-10 01:55:05 +03:00
:: ~& [%take-gall-onto +>.sih]
2015-05-08 22:43:11 +03:00
?- -.+>.sih
$| (crud %onto p.p.+>.sih)
$& (done %blit [%lin (tuba "{<p.p.sih>}")]~)
2015-05-08 22:43:11 +03:00
==
::
2015-12-06 04:43:57 +03:00
{$g $unto *}
2015-05-10 01:55:05 +03:00
:: ~& [%take-gall-unto +>.sih]
2015-05-08 22:43:11 +03:00
?- -.+>.sih
2015-12-06 04:43:57 +03:00
$coup ?~(p.p.+>.sih +>.$ (crud %coup u.p.p.+>.sih))
$quit peer
$reap ?~ p.p.+>.sih
2015-05-20 02:08:35 +03:00
+>.$
(dump:(crud %reap u.p.p.+>.sih) %logo ~)
2015-12-06 04:43:57 +03:00
$diff pump:(from ((hard dill-blit) q:`vase`+>+>.sih))
$doff !!
2015-05-08 22:43:11 +03:00
==
2015-03-18 19:40:40 +03:00
::
2015-12-06 04:43:57 +03:00
{$c $note *}
2015-05-01 03:21:31 +03:00
(from %out (tuba p.sih ' ' ~(ram re q.sih)))
2015-03-18 19:40:40 +03:00
::
2015-12-06 04:43:57 +03:00
{$c $writ *}
2015-03-18 19:40:40 +03:00
init
2015-03-19 01:01:47 +03:00
::
2015-12-06 04:43:57 +03:00
{$d $blit *}
2015-03-19 01:01:47 +03:00
(done +.sih)
2015-03-18 19:40:40 +03:00
==
2015-05-19 04:16:32 +03:00
::
++ wegh
^- mass
:- %dill
:- %|
2015-12-29 01:01:44 +03:00
:~ all+[%& [ore hey dug]:all]
2015-05-19 04:16:32 +03:00
==
::
++ wegt
2015-12-20 23:50:45 +03:00
|= {lal/?($a $b $c $e $f $g) mas/mass}
2015-05-19 04:16:32 +03:00
^+ +>
=. hef.all
?- lal
2015-12-06 04:43:57 +03:00
$a ~?(?=(^ a.hef.all) %double-mass-a hef.all(a `mas))
$b ~?(?=(^ b.hef.all) %double-mass-b hef.all(b `mas))
$c ~?(?=(^ c.hef.all) %double-mass-c hef.all(c `mas))
$e ~?(?=(^ e.hef.all) %double-mass-e hef.all(e `mas))
$f ~?(?=(^ f.hef.all) %double-mass-f hef.all(f `mas))
$g ~?(?=(^ g.hef.all) %double-mass-g hef.all(g `mas))
2015-05-19 04:16:32 +03:00
==
?. ?& ?=(^ a.hef.all)
2015-07-02 00:28:09 +03:00
?=(^ b.hef.all)
2015-05-19 04:16:32 +03:00
?=(^ c.hef.all)
?=(^ e.hef.all)
?=(^ f.hef.all)
?=(^ g.hef.all)
==
+>.$
%+ done(hef.all [~ ~ ~ ~ ~ ~])
%mass
=> [hef.all d=wegh]
2015-07-02 00:28:09 +03:00
[%vanes %| ~[u.a u.c d u.e u.f u.g u.b]]
2015-03-18 19:40:40 +03:00
--
2014-10-22 06:59:05 +04:00
::
2015-03-18 19:40:40 +03:00
++ ax :: make ++as
2015-12-20 23:50:45 +03:00
|= {hen/duct kyz/kiss} ::
2015-03-18 19:40:40 +03:00
?~ ore.all ~
=+ nux=(~(get by dug.all) hen)
?^ nux
(some ~(. as [~ hen u.ore.all] u.nux))
2015-12-06 04:43:57 +03:00
?. ?=($flow -.kyz) ~
2015-03-18 19:40:40 +03:00
%- some
%. q.kyz
%~ into as
:- [~ hen u.ore.all]
:* p.kyz
[~ ~]
80
0
(tuba "<awaiting {(trip p.kyz)}, this may take a few minutes>")
== ==
2015-03-18 19:40:40 +03:00
--
2015-12-21 00:16:39 +03:00
|% :: poke+peek pattern
2014-06-06 02:14:49 +04:00
++ call :: handle request
2015-12-20 23:50:45 +03:00
|= $: hen/duct
hic/(hypo (hobo kiss))
2014-06-06 02:14:49 +04:00
==
2015-12-06 04:43:57 +03:00
^+ [p=*(list move) q=..^$]
2014-06-06 02:14:49 +04:00
=> %= . :: XX temporary
q.hic
^- kiss
2015-12-06 04:43:57 +03:00
?: ?=($soft -.q.hic)
:: ~& [%dill-call-soft (@tas `*`-.p.q.hic)]
2014-06-06 02:14:49 +04:00
((hard kiss) p.q.hic)
?: (~(nest ut -:!>(*kiss)) | p.hic) q.hic
2015-12-06 04:43:57 +03:00
~& [%dill-call-flub (@tas `*`-.q.hic)]
2014-06-06 02:14:49 +04:00
((hard kiss) q.hic)
==
2015-12-06 04:43:57 +03:00
?: ?=($boot -.q.hic)
2015-03-18 19:40:40 +03:00
:_(..^$ [hen %pass ~ (note %a p.q.hic)]~)
2015-12-06 04:43:57 +03:00
?: ?=($flog -.q.hic)
2015-03-19 01:01:47 +03:00
:: ~& [%dill-flog +.q.hic]
2015-12-06 04:43:57 +03:00
?: ?=({$crud $hax-init {$leaf *} $~} p.q.hic)
2015-04-08 21:27:51 +03:00
=+ him=(slav %p (crip p.i.q.p.q.hic))
:_(..^$ ?~(hey.all ~ [u.hey.all %give %init him]~))
2015-12-06 04:43:57 +03:00
?: ?=({$crud $hax-heft $~} p.q.hic)
2015-05-19 04:16:32 +03:00
:_(..^$ ?~(hey.all ~ [u.hey.all %slip %d %heft ~]~))
2015-03-18 19:40:40 +03:00
:_(..^$ ?~(hey.all ~ [u.hey.all %slip %d p.q.hic]~))
=. hey.all ?^(hey.all hey.all `hen)
2015-12-06 04:43:57 +03:00
?: ?=($init -.q.hic)
2015-04-08 05:19:31 +03:00
:: ~& [%call-init hen]
2015-03-19 01:01:47 +03:00
?: =(ore.all `p.q.hic)
2015-04-08 21:27:51 +03:00
[[hen %give q.hic]~ ..^$]
2015-03-19 01:01:47 +03:00
=: ore.all `p.q.hic
dug.all ~
==
2015-05-17 05:37:36 +03:00
=^ moz all abet:(need (ax (need hey.all) [%flow %hood ~]))
2015-04-08 05:19:31 +03:00
?: |((lth p.q.hic 256) (gte p.q.hic (bex 64))) [moz ..^$] :: XX HORRIBLE
[:_(moz [(need hey.all) %give %init p.q.hic]) ..^$]
2015-03-18 19:40:40 +03:00
=+ nus=(ax hen q.hic)
?~ nus
~& [%dill-no-flow q.hic]
[~ ..^$]
=^ moz all abet:(call:u.nus q.hic)
[moz ..^$]
2014-05-22 21:39:51 +04:00
::
2013-09-29 00:21:18 +04:00
++ doze
2015-12-20 23:50:45 +03:00
|= {now/@da hen/duct}
2015-12-06 04:43:57 +03:00
^- (unit @da)
2013-09-29 00:21:18 +04:00
~
::
2015-03-19 01:01:47 +03:00
++ load :: trivial
2015-12-20 23:50:45 +03:00
|= old/all-axle
2015-12-06 04:43:57 +03:00
?: ?=($2 -.old)
2015-05-19 04:16:32 +03:00
$(old [%3 ore hey dug ~ ~ ~ ~ ~ ~]:old)
2015-03-19 01:01:47 +03:00
..^$(all old)
:: |= old=* :: diable
:: ..^$(ore.all `~zod)
2013-09-29 00:21:18 +04:00
::
++ scry
2015-12-20 23:50:45 +03:00
|= {fur/(unit (set monk)) ren/@tas his/ship syd/desk lot/coin tyl/path}
2015-02-27 09:35:41 +03:00
^- (unit (unit cage))
2015-03-18 19:40:40 +03:00
[~ ~]
::
++ stay all
2013-09-29 00:21:18 +04:00
::
2014-06-06 02:14:49 +04:00
++ take :: process move
2015-12-20 23:50:45 +03:00
|= {tea/wire hen/duct hin/(hypo sign)}
2015-12-06 04:43:57 +03:00
^+ [p=*(list move) q=..^$]
2015-03-18 19:40:40 +03:00
?: =(~ ore.all)
2015-12-06 04:43:57 +03:00
?: ?=({$a $init *} q.hin)
2015-04-08 05:19:31 +03:00
:: ~& [%take-init hen]
2015-03-19 01:01:47 +03:00
=. hey.all ?^(hey.all hey.all `hen)
2015-03-18 19:40:40 +03:00
[[[hen %give +.q.hin] ~] ..^$]
2015-04-08 05:19:31 +03:00
:: [~ ..^$]
2015-03-18 19:40:40 +03:00
~& [%take-back q.hin]
[~ ..^$]
?. (~(has by dug.all) hen)
~& [%take-weird-sign q.hin]
~& [%take-weird-hen hen]
[~ ..^$]
=+ our=?>(?=(^ ore.all) u.ore.all)
=^ moz all
2015-05-08 22:43:11 +03:00
abet:(~(take as [~ hen our] (~(got by dug.all) hen)) q.hin)
2015-03-18 19:40:40 +03:00
[moz ..^$]
2013-09-29 00:21:18 +04:00
--
2015-05-08 22:43:11 +03:00