| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369 |
- :: XX this whole thing is a mess and needs one more rewrite
- /- *sock
- /- *gene
- /+ ska
- =| burg=town
- |%
- ++ vent
- |= barn
- [sub for 1 %vent]
- ++ dole
- |= barn
- [sub for 1 %dole]
- ++ mill :: XX todo observe crashes
- =* this .
- |= [ject=* gist=barn]
- ^- [* _this]
- =| quay=(list [curb=berm sign=(map @ *) vale=@])
- =^ [goes=lake uses=pool rump=@] this (belt gist)
- =/ sign (~(put by *(map @ *)) rump ject)
- =/ reed (~(got by goes) (vent gist))
- |^ ^- [* _this]
- ?~ body.reed
- ?- -.bend.reed
- %clq
- ?@ (loan +<.bend.reed)
- (lump +>+.bend.reed)
- (lump +>-.bend.reed)
- ::
- %eqq
- ~! +<.bend.reed
- ~! +>-.bend.reed
- ?: =((loan +<.bend.reed) (loan +>-.bend.reed))
- (lump +>+<.bend.reed)
- (lump +>+>.bend.reed)
- ::
- %brn
- ?: =(0 (loan +<.bend.reed))
- (lump +>-.bend.reed)
- ?: =(1 (loan +<.bend.reed))
- (lump +>+.bend.reed)
- ~| %bad-bean !!
- ::
- %hop (lump +.bend.reed)
- %lnk
- =/ gunk `barn`[[%toss ~] (loan +<.bend.reed)]
- =^ [goop=lake ruse=pool rump=@] this
- (belt [%toss ~] (loan +<.bend.reed))
- %= $
- quay [[+>+>.bend.reed sign +>+<.bend.reed] quay]
- goes goop
- sign (lend +>-.bend.reed rump)
- ==
- ::
- %cal
- =/ [goop=lake ruse=pool rump=@] does:(~(got by land.burg) +<.bend.reed)
- %= $
- quay [[+>+>.bend.reed sign +>+<.bend.reed] quay]
- goes goop
- sign (yoke +>-.bend.reed ruse)
- reed (~(got by goop) (vent +<.bend.reed))
- ==
- ::
- %bec ~| %bec-slip !!
- %lnt
- =^ [goop=lake ruse=pool rump=@] this
- (belt [%toss ~] (loan +<.bend.reed))
- ~! +>.bend.reed
- %= $
- goes goop
- sign (lend +>.bend.reed rump)
- ==
- ::
- %jmp
- =/ [goop=lake ruse=pool rump=@] does:(~(got by land.burg) +<.bend.reed)
- %= $
- goes goop
- sign (yoke +>.bend.reed ruse)
- ==
- ::
- %eye ~| %eye-slip !!
- %spy ~| %fbi !!
- %hnt ?>((~(has by sign) +<.bend.reed) (lump +>.bend.reed))
- %don
- ?~ quay [(loan +.bend.reed) this]
- =/ rail [sub for]:curb.i.quay
- =/ [goop=lake ruse=pool bump=@] does:(~(got by land.burg) rail)
- %= $
- sign (~(put by sign.i.quay) vale.i.quay (loan +.bend.reed))
- goes goop
- reed ~|(%miss-entry (~(got by goes) curb.i.quay))
- quay t.quay
- ==
- ::
- %bom
- ~| %boom !!
- ==
- %= $
- body.reed t.body.reed
- sign
- %- ~(put by sign)
- ?- -.i.body.reed
- %imm [+> +<]:i.body.reed
- %mov
- :- +>.i.body.reed
- (loan +<.i.body.reed)
- ::
- %inc
- :- +>.i.body.reed
- =/ bink (loan +<.i.body.reed)
- ?> ?=(@ bink)
- .+(bink)
- ::
- %unc
- :- +>.i.body.reed
- =/ bink (loan +<.i.body.reed)
- ?> ?=(@ bink)
- .+(bink)
- ::
- %con
- :- +>+.i.body.reed
- :- (loan +<.i.body.reed)
- (loan +>-.i.body.reed)
- ::
- %hed
- =/ cash (loan +<.i.body.reed)
- ?> ?=(^ cash)
- [+>.i.body.reed -.cash]
- ::
- %hud
- =/ cash (loan +<.i.body.reed)
- ?> ?=(^ cash)
- [+>.i.body.reed -.cash]
- ::
- %tal
- =/ cash (loan +<.i.body.reed)
- ?> ?=(^ cash)
- [+>.i.body.reed +.cash]
- ::
- %tul
- =/ cash (loan +<.i.body.reed)
- ?> ?=(^ cash)
- [+>.i.body.reed +.cash]
- ==
- ==
- ++ loan
- |= @
- ~| %loan-miss (~(got by sign) +<)
- ++ lend
- |= [src=@ dst=@]
- ^- _sign
- (~(put by `_sign`~) dst (loan src))
- ++ lump
- |= berm
- ^$(reed ~|(%miss-entry (~(got by goes) +<)))
- ++ yoke
- |= [ox=(list @) lo=pool]
- =| link=(map @ *)
- |- ^- (map @ *)
- ?~ ox
- ?~ lo link
- ~| %yoke-match !!
- ?~ lo
- ~| %yoke-match !!
- $(link (~(put by link) ssa.i.lo (loan i.ox)), ox t.ox, lo t.lo)
- --
- ++ belt
- =* this .
- |= gist=barn
- ^- [rice _this]
- =. this +:(reap gist)
- :_ this
- does:(~(got by land.burg) gist)
- ++ reap
- =* this .
- |= =barn
- ^- [boot _this]
- =/ [=boot =farm] (plot barn)
- =^ work this (till farm)
- :- boot
- (weed:(rake:this work) work)
- ++ plot :: subject knowledge analysis, emitting nock-- or "nomm"
- =* this .
- =| ski=farm
- |= ent=barn
- ^- [boot farm]
- =/ bot (~(get by land.burg) ent)
- ?. ?=(~ bot) [says.u.bot ski] :: no need to re-plot a barn we already know
- =/ ext (~(get by yard.ski) ent)
- ?. ?=(~ ext) [says.u.ext ski]
- =; [res=[does=nomm says=boot:ska] sku=farm]
- [says.res sku(yard (~(put by yard.sku) ent res), wood [ent wood.sku])]
- :: blackhole, guard recursion
- =. ski ski(yard (~(put by yard.ski) ent [[%zer 0 %.n] [%risk %toss ~]]))
- |- ^- [[does=nomm says=boot:ska] farm]
- =<
- ?+ for.ent bomb
- [[* *] *]
- =^ [doth=nomm sath=boot:ska] ski $(for.ent -.for.ent)
- ?: ?=([%boom ~] sath) bomb
- =^ [toes=nomm tays=boot:ska] ski $(for.ent +.for.ent)
- ?: ?=([%boom ~] tays) bomb
- :_ ski
- :_ (cobb:ska sath tays)
- [%par doth toes]
- ::
- [%0 @]
- :: we can decompose the axis into two axes, a safe axis which can
- :: be implemented unchecked, and an unsafe axis which must be
- :: checked. We then compose these two axes into safe %zer and
- :: unsafe %zer composed by %sev
- =+ [saf rik ken]=(punt:ska +.for.ent sub.ent)
- ?: =(0 saf) bomb
- :_ ski
- ?: =(1 rik) [[%zer saf %.y] [%safe ken]]
- ?: =(1 saf) [[%zer rik %.n] [%risk ken]]
- :_ [%risk ken]
- [%sev [%zer saf %.y] [%zer rik %.n]]
- ::
- [%1 *]
- :_ ski
- :_ [%safe %know +.for.ent]
- [%one +.for.ent]
- ::
- [%2 * *]
- =^ [dost=nomm sass=boot:ska] ski $(for.ent +<.for.ent)
- ?: ?=([%boom ~] sass) bomb
- =^ [doff=nomm faff=boot:ska] ski $(for.ent +>.for.ent)
- ?: ?=([%boom ~] faff) bomb
- =/ skun
- ?- sass
- [%safe *] sure.sass
- [%risk *] hope.sass
- ==
- ?: ?=([%safe %know *] faff)
- =^ ret ski ^$(ent [skun know.sure.faff])
- :_ ski
- :_ ?: ?=([%safe *] sass) ret (dare:ska ret)
- [%two dost doff skun (some know.sure.faff) %.y]
- ?: ?=([%risk %know *] faff)
- =^ ret ski ^$(ent [skun know.hope.faff])
- :_ ski
- :_ (dare:ska ret)
- [%two dost doff skun (some know.hope.faff) %.n]
- :_ ski
- :_ [%risk %toss ~]
- [%two dost doff skun ~ %.n]
- ::
- [%3 *]
- =^ [deft=nomm koob=boot:ska] ski $(for.ent +.for.ent)
- ?: ?=([%boom ~] koob) bomb
- :_ ski
- :_ (ques:ska koob)
- [%thr deft]
- ::
- [%4 *]
- =^ [dink=nomm sink=boot:ska] ski $(for.ent +.for.ent)
- ?: ?=([%boom ~] sink) bomb
- =/ rink
- ?- sink
- [%safe *] sure.sink
- [%risk *] hope.sink
- ==
- :_ ski
- :_ (pile:ska sink)
- [%fou dink ?|(?=([%dice ~] rink) ?=([%flip ~] rink) ?=([%know @] rink))]
- ::
- [%5 * *]
- =^ [dome=nomm foam=boot:ska] ski $(for.ent +<.for.ent)
- ?: ?=([%boom ~] foam) bomb
- =^ [doot=nomm foot=boot:ska] ski $(for.ent +>.for.ent)
- ?: ?=([%boom ~] foot) bomb
- :_ ski
- :_ (bopp:ska foam foot)
- [%fiv dome doot]
- ::
- [%6 * * *]
- =^ [dawn=nomm sond=boot:ska] ski $(for.ent +<.for.ent)
- ?: ?=([%safe %know %0] sond) $(for.ent +>-.for.ent)
- ?: ?=([%safe %know %1] sond) $(for.ent +>+.for.ent)
- ?: ?=([%safe %know *] sond) bomb
- ?: ?=([%safe %bets *] sond) bomb
- ?: ?=([%safe %flip ~] sond)
- =^ [drew=nomm slew=boot:ska] ski $(for.ent +>-.for.ent)
- =^ [darn=nomm song=boot:ska] ski $(for.ent +>+.for.ent)
- :_ ski
- :_ (gnaw:ska slew song)
- [%six dawn drew darn]
- ?: ?=([%risk %know %0] sond)
- =^ [drew=nomm slew=boot:ska] ski $(for.ent +>-.for.ent)
- :_ ski
- :_ (dare:ska slew)
- :: run dawn in case it crashes, but throw it away
- [%sev [%par dawn drew] [%zer 3 %.y]]
- ?: ?=([%risk %know %1] sond)
- =^ [darn=nomm song=boot:ska] ski $(for.ent +>+.for.ent)
- :_ ski
- :_ (dare:ska song)
- :: run dawn in case it crashes, but throw it away
- [%sev [%par dawn darn] [%zer 3 %.y]]
- ?: ?=([%risk %know *] sond) bomb
- ?: ?=([%risk %bets *] sond) bomb
- =^ [drew=nomm slew=boot:ska] ski $(for.ent +>-.for.ent)
- =^ [darn=nomm song=boot:ska] ski $(for.ent +>+.for.ent)
- :_ ski
- :_ (dare:ska (gnaw:ska slew song))
- [%six dawn drew darn]
- ::
- [%7 * *]
- =^ [deck=nomm keck=boot:ska] ski $(for.ent +<.for.ent)
- ?: ?=([%boom ~] keck) bomb
- =/ news
- ?- keck
- [%safe *] sure.keck
- [%risk *] hope.keck
- ==
- =^ [dest=nomm zest=boot:ska] ski $(sub.ent news, for.ent +>.for.ent)
- ?: ?=([%boom ~] zest) bomb
- :_ ski
- :_ ?: ?=([%safe *] keck) zest (dare:ska zest)
- [%sev deck dest]
- ::
- [%8 * *]
- =^ [pink=nomm pest=boot:ska] ski $(for.ent +<.for.ent)
- ?: ?=([%boom ~] pest) bomb
- =/ nest
- ?- pest
- [%safe *] sure.pest
- [%risk *] hope.pest
- ==
- =^ [dest=nomm zest=boot:ska] ski
- $(sub.ent (knit:ska nest sub.ent), for.ent +>.for.ent)
- ?: ?=([%boom ~] zest) bomb
- :_ ski
- :_ ?: ?=([%safe *] pest)
- zest
- (dare:ska zest)
- [%sev [%par pink %zer 1 %.y] dest]
- ::
- [%9 @ *]
- =^ [lore=nomm sore=boot:ska] ski $(for.ent +>.for.ent)
- ?: ?=([%boom ~] sore) bomb
- =/ news
- ?- sore
- [%safe *] sure.sore
- [%risk *] hope.sore
- ==
- =/ fork (pull:ska +<.for.ent news)
- ?: ?=([%safe %know *] fork)
- =^ ret ski ^$(ent [news know.sure.fork])
- :_ ski
- :_ ?: ?=([%safe *] sore)
- ret
- (dare:ska ret)
- [%sev lore [%two [%zer 1 %.y] [%zer +<.for.ent %.y] news (some know.sure.fork) %.y]]
- ?: ?=([%risk %know *] fork)
- =^ ret ski ^$(ent [news know.hope.fork])
- :_ ski
- :_ (dare:ska ret)
- [%sev lore [%two [%zer 1 %.y] [%zer +<.for.ent %.n] news (some know.hope.fork) %.n]]
- :_ ski
- :_ [%risk %toss ~]
- [%sev lore [%two [%zer 1 %.y] [%zer +<.for.ent ?=(%safe -.fork)] news ~ ?=(%safe -.fork)]]
- ::
- [%10 [@ *] *]
- =^ [neat=nomm seat=boot:ska] ski $(for.ent +>.for.ent)
- ?: ?=([%boom ~] seat) bomb
- =^ [pace=nomm spat=boot:ska] ski $(for.ent +<+.for.ent)
- ?: ?=([%boom ~] spat) bomb
- =/ teak
- ?- seat
- [%safe *] sure.seat
- [%risk *] hope.seat
- ==
- =+ [saf rik ken]=(punt:ska +<-.for.ent teak)
- ?: =(0 saf) bomb
- :_ ski
- :_ (welt:ska +<-.for.ent spat seat)
- ?: =(1 rik)
- [%ten [+<-.for.ent pace] neat %.y]
- ^- nomm
- :+ %sev [%par neat pace]
- :+ %ten
- [saf %ten [rik %zer 3 %.n] [%zer (peg saf 2) %.y] %.y]
- [[%zer 2 %.y] %.y]
- ::
- [%11 @ *]
- =^ [real=nomm seal=boot:ska] ski $(for.ent +>.for.ent)
- ?: ?=([%boom ~] seal) bomb
- ^- [[does=nomm says=boot:ska] farm]
- [[[%els +<.for.ent real] seal] ski]
- ::
- [%11 [@ *] *]
- =^ [fake=nomm sake=boot:ska] ski $(for.ent +<+.for.ent)
- ?: ?=([%boom ~] sake) bomb
- =^ [real=nomm seal=boot:ska] ski $(for.ent +>.for.ent)
- ?: ?=([%boom ~] seal) bomb
- :_ ski
- ?: ?=([%safe *] sake)
- [[%eld [+<-.for.ent fake] real %.y] seal]
- [[%eld [+<-.for.ent fake] real %.n] seal]
- ::
- [%12 * *]
- =^ [fear=nomm sear=boot:ska] ski $(for.ent +<.for.ent)
- ?: ?=([%boom ~] sear) bomb
- =^ [pack=nomm sack=boot:ska] ski $(for.ent +>.for.ent)
- ?: ?=([%boom ~] sack) bomb
- :_ ski
- :_ [%risk %toss ~]
- [%twe fear pack]
- ==
- |%
- ++ bomb
- ^- [[nomm boot:ska] farm]
- [[[%zer 0 %.n] [%boom ~]] ski]
- --
- ++ till
- =* this .
- |= =farm
- ^- [(list barn) _this]
- =/ work (flop (skip wood.farm ~(has by land.burg)))
- :- work
- |- ^- _this
- ?~ work this
- =/ next i.work
- =+ ~| %next-miss (~(got by yard.farm) next)
- :: now we have the nock-- in does
- =/ dock [lamb=lamb.burg lake=*lake]
- =| flow=line
- =/ axle=@ 1
- =/ fawn does
- |^
- =- =. lamb.burg lamb.dock
- =. land.burg
- %+ ~(put by land.burg) next
- =/ flue (~(got by lake.dock) her)
- :_ says
- ~| ~(key by lake.dock)
- =. lake.dock (~(put by (~(del by lake.dock) her)) (vent next) flue)
- ~| ~(key by lake.dock)
- =. ^dock dock
- =^ [hose=@ bole=berm] dock (peel hat (vent next))
- ~| ~(key by lake.dock)
- ~| bole
- =/ alms (~(got by lake.dock) bole)
- =. lake.dock (~(put by (~(del by lake.dock) bole)) (dole next) alms)
- :- lake.dock
- :_ hose
- =| safe=? :: XX state maximal safe axes, as this will overly pessimize
- =/ bolt=@ 1
- |- ^- (list [@ @ ?])
- ?- -.hat
- %tine [[bolt +.hat safe]]~
- %disc ~
- %fork
- %+ weld
- $(hat left.hat, bolt (peg bolt 2), safe ?&(safe safe.hat))
- $(hat rite.hat, bolt (peg bolt 3), safe ?&(safe safe.hat))
- ==
- ^$(work t.work)
- |- ^- [[hat=plow her=berm] dock=_dock]
- ?- fawn
- [%par * *]
- =^ [one=plow two=plow her=berm] dock twin
- =^ [bat=plow bit=berm] dock
- $(fawn +>.fawn, axle (peg axle 3), flow [%moat her two])
- =^ [hat=plow hit=berm] dock
- $(fawn +<.fawn, axle (peg axle 2), flow [%moat bit one])
- (copy hat bat hit)
- ::
- [%zer *]
- ?- -.flow
- %moat
- =/ slow (take +<.fawn what.flow +>.fawn)
- ?~ slow
- fail
- :_ dock
- [u.slow wher.flow]
- ::
- %rift
- =^ miff dock wean
- =/ slow (take +<.fawn [%tine miff] +>.fawn)
- ?~ slow
- fail
- =^ her dock (mend %miff ~ [%brn miff [troo fals]:flow])
- :_ dock
- [u.slow her]
- ::
- %pond
- =^ tend dock wean
- =/ slow (take +<.fawn [%tine tend] +>.fawn)
- ?~ slow
- fail
- =^ her dock (mend %tend ~ [%don tend])
- :_ dock
- [u.slow her]
- ==
- ::
- [%one *]
- (bang +.fawn)
- ::
- [%two *]
- ?- -.flow
- %moat
- =^ flaw dock (peel what.flow wher.flow)
- (tool `flaw +.fawn)
- ::
- %rift
- =^ muse dock wean
- =^ skit dock (mend %skit ~ [%brn muse [troo fals]:flow])
- (tool `[muse skit] +.fawn)
- ::
- %pond
- (tool ~ +.fawn)
- ==
- ::
- [%thr *]
- ?- -.flow
- %moat
- ?- -.what.flow
- %fork fail
- %disc $(fawn +.fawn, axle (peg axle 3))
- %tine
- =^ pear dock (mend %pear [%imm 0 +.what.flow]~ [%hop wher.flow])
- =^ bock dock (mend %bock [%imm 1 +.what.flow]~ [%hop wher.flow])
- =^ noon dock wean
- =^ keck dock (mend %keck ~ [%clq noon pear bock])
- $(fawn +.fawn, axle (peg axle 3), flow [%moat keck [%tine noon]])
- ==
- ::
- %rift
- =^ noon dock wean
- =^ keck dock (mend %keck ~ [%clq noon [troo fals]:flow])
- $(fawn +.fawn, axle (peg axle 3), flow [%moat keck [%tine noon]])
- ::
- %pond
- =^ tend dock wean
- =^ pear dock (mend %pear [%imm 0 tend]~ [%don tend])
- =^ bock dock (mend %bock [%imm 1 tend]~ [%don tend])
- =^ noon dock wean
- =^ keck dock (mend %keck ~ [%clq noon pear bock])
- $(fawn +.fawn, axle (peg axle 3), flow [%moat keck [%tine noon]])
- ==
- ::
- [%fou *]
- ?- -.flow
- %moat
- ?- -.what.flow
- %fork fail
- %disc
- =^ left dock wean
- ?: +>.fawn :: safe?
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat wher.flow [%tine left]])
- =^ meal dock wean
- =^ dink dock (mend %dink ~[[%inc meal left]] [%hop wher.flow])
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat dink [%tine meal]])
- ::
- %tine
- =^ meal dock wean
- =^ rink dock
- ?: +>.fawn
- (mend %rink ~[[%unc meal +.what.flow]] [%hop wher.flow])
- (mend %rink ~[[%inc meal +.what.flow]] [%hop wher.flow])
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat rink [%tine meal]])
- ==
- ::
- %rift
- =^ iffy dock wean
- =^ miff dock wean
- =^ kink dock
- ?: +>.fawn :: safe?
- (mend %kink ~[[%unc miff iffy]] [%brn iffy [troo fals]:flow])
- (mend %kink ~[[%inc miff iffy]] [%brn iffy [troo fals]:flow])
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat kink [%tine miff]])
- ::
- %pond
- =^ pend dock wean
- =^ spin dock wean
- =^ pink dock
- ?: +>.fawn :: safe?
- (mend %pink ~[[%unc spin pend]] [%don pend])
- (mend %pink ~[[%inc spin pend]] [%don pend])
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat pink [%tine spin]])
- ==
- ::
- [%fiv *]
- ?- -.flow
- %moat
- ?- -.what.flow
- %fork fail
- %disc
- =^ [hit=plow his=berm] dock $(fawn +<.fawn, axle (peg axle 6))
- =^ [hot=plow hog=berm] dock
- $(fawn +<.fawn, axle (peg axle 7), flow [%moat his [%disc ~]])
- (copy hit hot hog)
- ::
- %tine
- =^ root dock (mend %root ~[[%imm 0 +.what.flow]] [%hop wher.flow])
- =^ salt dock (mend %salt ~[[%imm 1 +.what.flow]] [%hop wher.flow])
- =^ load dock wean
- =^ toad dock wean
- =^ qual dock (mend %qual ~ [%eqq load toad root salt])
- =^ [hit=plow his=berm] dock
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat qual [%tine load]])
- =^ [hot=plow hog=berm] dock
- $(fawn +>.fawn, axle (peg axle 7), flow [%moat his [%tine toad]])
- (copy hit hot hog)
- ==
- ::
- %rift
- =^ load dock wean
- =^ toad dock wean
- =^ rail dock (mend %rail ~ [%eqq load toad [troo fals]:flow])
- =^ [hit=plow his=berm] dock
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat rail [%tine load]])
- =^ [hot=plow hog=berm] dock
- $(fawn +>.fawn, axle (peg axle 7), flow [%moat his [%tine toad]])
- (copy hit hot hog)
- ::
- %pond
- =^ bean dock wean
- =^ root dock (mend %root ~[[%imm 0 bean]] [%don bean])
- =^ salt dock (mend %salt ~[[%imm 1 bean]] [%don bean])
- =^ load dock wean
- =^ toad dock wean
- =^ fall dock (mend %fall ~ [%eqq load toad root salt])
- =^ [hit=plow his=berm] dock
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat fall [%tine load]])
- =^ [hot=plow hog=berm] dock
- $(fawn +>.fawn, axle (peg axle 7), flow [%moat his [%tine toad]])
- (copy hit hot hog)
- ==
- ::
- [%six *]
- =^ [hut=plow hum=berm] dock $(fawn +>-.fawn, axle (peg axle 14))
- =^ [hat=plow ham=berm] dock $(fawn +>+.fawn, axle (peg axle 15))
- =^ [hot=plow hog=berm] dock
- $(fawn +<.fawn, axle (peg axle 6), flow [%rift hum ham])
- =^ [hit=plow him=berm] dock (copy hut hat hog)
- (copy hit hot him)
- ::
- [%sev *]
- =^ [hit=plow his=berm] dock $(fawn +>.fawn, axle (peg axle 7))
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat his hit])
- ::
- [%ten *]
- ?- -.flow
- %moat
- =^ [out=plow inn=plow tub=berm] dock (tear +<-.fawn what.flow +>+.fawn wher.flow)
- =^ [hat=plow him=berm] dock $(fawn +<+.fawn, axle (peg axle 13), flow [%moat tub inn])
- =^ [hut=plow mud=berm] dock $(fawn +>-.fawn, axle (peg axle 14), flow [%moat him out])
- (copy hat hut mud)
- ::
- %rift
- :: this is a weird case. It only works if the axis is one,
- :: otherwise it crashes, and there's no point in an axis edit of
- :: one except to discard the first result
- ?. =(1 +<-.fawn) fail
- =^ hide dock wean
- =^ mood dock (mend %mood ~ [%brn hide [troo fals]:flow])
- =^ [hat=plow him=berm] dock
- $(fawn +<+.fawn, axle (peg axle 13), flow [%moat mood [%tine hide]])
- =^ [hut=plow mud=berm] dock
- $(fawn +>-.fawn, axle (peg axle 14), flow [%moat him [%disc ~]])
- (copy hat hut mud)
- ::
- %pond
- =^ dire dock wean
- =^ eden dock (mend %eden ~ [%don dire])
- =^ [out=plow inn=plow tub=berm] dock (tear +<-.fawn [%tine dire] +>+.fawn eden)
- =^ [hat=plow him=berm] dock $(fawn +<+.fawn, axle (peg axle 13), flow [%moat tub inn])
- =^ [hut=plow mud=berm] dock $(fawn +>-.fawn, axle (peg axle 14), flow [%moat him out])
- (copy hat hut mud)
- ==
- ::
- [%els *]
- =^ [hat=plow him=berm] dock $(fawn +>.fawn, axle (peg axle 7))
- =^ pint dock wean
- =^ tint dock (mend %tint ~[[%imm +<.fawn pint]] [%hnt pint him])
- :_ dock
- [hat tint]
- ::
- [%eld *]
- =^ [hat=plow him=berm] dock $(fawn +>-.fawn, axle (peg axle 7))
- =^ pint dock wean
- =^ dint dock wean
- =^ aint dock wean
- =^ tint dock (mend %tint ~[[%imm +<-.fawn pint] [%con pint dint aint]] [%hnt aint him])
- =^ [hit=plow his=berm] dock $(fawn +<+.fawn, axle (peg axle 13), flow [%moat tint [%tine dint]])
- (copy hat hit his)
- ::
- [%twe *]
- ?- -.flow
- %moat
- =^ [use=@ her=berm] dock (peel what.flow wher.flow)
- =^ fens dock wean
- =^ phat dock wean
- =^ cope dock (mend %cope ~ [%spy fens phat use her])
- =^ [ham=plow pan=berm] dock
- $(fawn +>.fawn, axle (peg axle 7), flow [%moat cope [%tine phat]])
- =^ [hen=plow pen=berm] dock
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat pan [%tine fens]])
- (copy ham hen pen)
- ::
- %rift
- =^ sift dock wean
- =^ bars dock (mend %bars ~ [%brn sift [troo fals]:flow])
- =^ fens dock wean
- =^ phat dock wean
- =^ cope dock (mend %cope ~ [%spy fens phat sift bars])
- =^ [ham=plow pan=berm] dock
- $(fawn +>.fawn, axle (peg axle 7), flow [%moat cope [%tine phat]])
- =^ [hen=plow pen=berm] dock
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat pan [%tine fens]])
- (copy ham hen pen)
- ::
- %pond
- =^ sped dock wean
- =^ sear dock (mend %sear ~ [%don sped])
- =^ fens dock wean
- =^ phat dock wean
- =^ cope dock (mend %cope ~ [%spy fens phat sped sear])
- =^ [ham=plow pan=berm] dock
- $(fawn +>.fawn, axle (peg axle 7), flow [%moat cope [%tine phat]])
- =^ [hen=plow pen=berm] dock
- $(fawn +<.fawn, axle (peg axle 6), flow [%moat pan [%tine fens]])
- (copy ham hen pen)
- ==
- ==
- ++ fail
- ^- [[hat=plow her=berm] dock=_dock]
- =^ hole dock bomb
- :_ dock
- [[%disc ~] hole]
- ++ tear :: take apart an ssa map for an edit
- |= [axe=@ bit=plow safe=? her=berm]
- ^- [[out=plow inn=plow his=berm] _dock]
- ?: =(0 axe)
- =^ hole dock bomb
- [[[%disc ~] [%disc ~] hole] dock]
- =+
- |- ^- [[out=plow inn=plow rind=(list bran)] deck=_dock]
- ?: =(1 axe)
- :_ dock
- [[%disc ~] bit ~]
- ?- -.bit
- %disc
- ?: safe [[[%disc ~] [%disc ~] ~] dock]
- ?- (cap axe)
- %2
- =^ ruck dock $(axe (mas axe))
- :_ dock
- [[%fork out.ruck [%disc ~] %.n] inn.ruck rind.ruck]
- %3
- =^ ruck dock $(axe (mas axe))
- :_ dock
- [[%fork [%disc ~] out.ruck %.n] inn.ruck rind.ruck]
- ==
- ::
- %tine
- =^ tour dock wean
- =^ plat dock wean
- ?- (cap axe)
- %2
- =^ ruck dock $(axe (mas axe), bit [%tine plat])
- :_ dock
- [[%fork out.ruck [%tine tour] safe] inn.ruck [[%con plat tour +.bit] rind.ruck]]
- %3
- =^ ruck dock $(axe (mas axe), bit [%tine plat])
- :_ dock
- [[%fork [%tine tour] out.ruck safe] inn.ruck [[%con tour plat +.bit] rind.ruck]]
- ==
- ::
- %fork
- ?- (cap axe)
- %2
- =^ ruck dock $(axe (mas axe), bit left.bit)
- :_ dock
- [[%fork out.ruck rite.bit ?&(safe safe.bit)] inn.ruck rind.ruck]
- %3
- =^ ruck dock $(axe (mas axe), bit rite.bit)
- :_ dock
- [[%fork left.bit out.ruck ?&(safe safe.bit)] inn.ruck rind.ruck]
- ==
- ==
- =. dock deck
- ?~ rind
- :_ dock
- [out inn her]
- =^ him dock (mend %diet rind [%hop her])
- :_ dock
- [out inn him]
- ++ tool :: generate calls
- |= [flaw=(unit [rut=@ rot=berm]) sums=nomm form=nomm sunk=sock fork=(unit *) safe=?]
- ^- [[plow berm] _dock]
- ?~ fork
- =^ lash dock wean
- =^ frog dock wean
- =^ coil dock
- ?~ flaw
- (mend %coil ~ [%lnt frog lash])
- (mend %coil ~ [%lnk frog lash rut.u.flaw rot.u.flaw])
- =^ [bow=plow urn=berm] dock
- $(fawn sums, axle (peg axle 6), flow [%moat coil [%tine lash]])
- =^ [fog=plow sog=berm] dock
- $(fawn form, axle (peg axle 14), flow [%moat urn [%tine frog]])
- (copy fog bow sog)
- =/ bale=barn [sunk u.fork]
- =/ bore (~(get by land.burg) bale)
- ?~ bore :: we don't know the registerization of the subject for the call, yet
- =^ lash dock wean
- =^ dote dock
- ?~ flaw
- (mend %dote ~ [%eye bale lash])
- (mend %dote ~ [%bec bale lash rut.u.flaw rot.u.flaw])
- =^ [bow=plow urn=berm] dock
- $(fawn sums, axle (peg axle 6), flow [%moat dote [%tine lash]])
- ?: safe [[bow urn] dock]
- =^ [fog=plow sog=berm] dock
- $(fawn form, axle (peg axle 14), flow [%moat urn [%disc ~]])
- (copy fog bow sog)
- =^ uses dock (cool uses.does.u.bore)
- =^ dote dock
- ?~ flaw
- (mend %dote ~ [%jmp bale (boil uses)])
- (mend %dote ~ [%cal bale (boil uses) rut.u.flaw rot.u.flaw])
- =^ [ash=plow dot=berm] dock (whop uses dote)
- =^ [bow=plow urn=berm] dock
- $(fawn sums, axle (peg axle 6), flow [%moat dot ash])
- ?: safe [[bow urn] dock]
- =^ [fog=plow sog=berm] dock
- $(fawn form, axle (peg axle 14), flow [%moat urn [%disc ~]])
- (copy fog bow sog)
- ++ cool :: generate SSAs for the call side of a use list
- |= use=(list [@ @ ?])
- ^- [(list [@ @ ?]) _dock]
- ?~ use [~ dock]
- =^ pan dock wean
- =^ lid dock $(use t.use)
- :_ dock
- [[-.i.use pan +>.i.use] lid]
- ++ boil :: ssas from a use list
- |= use=(list [@ @ ?])
- ^- (list @)
- (turn use |=([@ ssa=@ ?] ssa))
- ++ whop :: turn a use list into a plow
- |= [use=(list [@ @ ?]) her=berm]
- ^- [[plow berm] _dock]
- ?~ use [[*plow her] dock]
- =^ [low=plow him=berm] dock $(use t.use)
- =/ ace (take -.i.use [%tine +<.i.use] +>.i.use)
- ?~ ace fail
- (copy low u.ace him)
- ++ bang
- |= non=*
- ^- [[hat=plow her=berm] _dock]
- ?- flow
- [%pond ~]
- =^ ret dock wean
- =^ her dock (mend %rime ~[[%imm +.fawn ret]] [%don ret])
- :_ dock
- [[%disc ~] her]
- ::
- [%rift *]
- ?: =(0 +.fawn) [[[%disc ~] troo.flow] dock]
- ?: =(1 +.fawn) [[[%disc ~] fals.flow] dock]
- :: XX maybe we should assert that SKA should have caught this?
- =^ hole dock bomb
- :_ dock
- [[%disc ~] hole]
- ::
- [%moat *]
- =/ what what.flow
- =/ mitt
- |- ^- (unit (list bran))
- ?- what
- [%disc ~]
- (some ~)
- ::
- [%tine @]
- (some ~[[%imm non +.what]])
- ::
- [%fork *]
- ?@ non
- ?: safe.what
- ~| %safe-axis-atom !!
- ~
- (clap $(what left.what, non -.non) $(what rite.what, non +.non) weld)
- ==
- ?~ mitt
- =^ hole dock bomb
- :_ dock
- [[%disc ~] hole]
- =^ rock dock (mend %toil u.mitt [%hop wher.flow])
- :_ dock
- [[%disc ~] rock]
- ==
- ++ take :: axis
- |= [sax=@ tow=plow row=?] :: axis, destination, safety
- ^- (unit plow) :: nullary case = crash
- ?: =(0 sax) ~
- %- some
- |- ^- plow
- ?: =(1 sax) tow
- ?- (cap sax)
- %2 [%fork $(sax (mas sax)) [%disc ~] row]
- %3 [%fork [%disc ~] $(sax (mas sax)) row]
- ==
- ++ copy :: replicate values to two destinations
- |= [hat=plow bat=plow her=berm]
- ^- [[hat=plow her=berm] _dock]
- =^ [tog=plow moot=(list bran)] dock
- |-
- ^- [[tog=plow moot=(list bran)] _dock]
- ?: ?=([%disc ~] hat) [[bat ~] dock]
- ?: ?=([%disc ~] bat) [[hat ~] dock]
- ?- hat
- [%tine @]
- ?- bat
- [%tine @]
- ?: =(+.hat +.bat)
- [[hat ~] dock]
- [[hat ~[[%mov +.hat +.bat]]] dock]
- ::
- [%fork *]
- =^ one dock wean
- =^ two dock wean
- =^ [hog=plow hoot=(list bran)] dock
- $(hat [%tine one], bat left.bat)
- =^ [log=plow loot=(list bran)] dock
- $(hat [%tine two], bat rite.bat)
- :_ dock
- :- ^- plow
- [%fork hog log safe.bat]
- [[%con one two +.hat] (weld hoot loot)]
- ==
- ::
- [%fork *]
- ?- bat
- [%tine @]
- =^ one dock wean
- =^ two dock wean
- =^ [hog=plow hoot=(list bran)] dock
- $(hat left.hat, bat [%tine one])
- =^ [log=plow loot=(list bran)] dock
- $(hat rite.hat, bat [%tine two])
- :_ dock
- [[%fork hog log safe.hat] [%con one two +.bat] (weld hoot loot)]
- ::
- [%fork *]
- =^ [hog=plow hoot=(list bran)] dock $(hat left.hat, bat left.bat)
- =^ [log=plow loot=(list bran)] dock $(hat rite.hat, bat rite.bat)
- :_ dock
- [[%fork hog log ?&(safe.hat safe.bat)] (weld hoot loot)]
- ==
- ==
- =/ blab (milk %copy)
- :_ dock(lake (~(put by lake.dock) blab [moot %hop her]))
- [tog blab]
- ++ twin :: split sans from flow
- ^- [[plow plow berm] _dock]
- ?- flow
- [%rift *]
- =^ hole dock bomb
- :_ dock
- [[%disc ~] [%disc ~] hole]
- ::
- [%pond ~]
- =^ one dock wean
- =^ two dock wean
- =^ ret dock wean
- =^ her dock (mend %taco ~[[%con one two ret]] [%don ret])
- :_ dock
- [[%tine one] [%tine two] her]
- ::
- [%moat *]
- ?- what.flow
- [%fork *]
- :_ dock
- [left.what.flow rite.what.flow wher.flow]
- ::
- [%disc ~]
- :_ dock
- [[%disc ~] [%disc ~] wher.flow]
- ::
- [%tine @]
- =^ one dock wean
- =^ two dock wean
- =^ her dock
- (mend %cons ~[[%con one two +.what.flow]] [%hop wher.flow])
- :_ dock
- [[%tine one] [%tine two] her]
- ==
- ==
- ++ bomb
- ^- [berm _dock]
- (mend %boom ~ [%bom ~])
- ++ milk :: local label
- |= gen=@
- ^- berm
- ~! next
- [sub.next for.next axle gen]
- ++ mend
- |= [gen=@ =lock]
- ^- [berm _dock]
- =/ curb (milk gen)
- :- curb
- dock(lake (~(put by lake.dock) curb lock))
- ++ wean :: fresh ssa
- ^- [@ _dock]
- [lamb.dock dock(lamb .+(lamb.dock))]
- ++ peel :: split a define among a plow's worth of uses
- |= [mole=plow hill=berm]
- ^- [[use=@ her=berm] _dock]
- ~& ~(key by lake.dock)
- =+
- |- ^- [[fine=(unit @) load=(list bran)] dock=_dock]
- ?- -.mole
- %tine [[`+.mole ~] dock]
- %disc [[~ ~] dock]
- %fork
- =^ [file=(unit @) loaf=(list bran)] dock $(mole left.mole)
- =^ [fire=(unit @) road=(list bran)] dock $(mole rite.mole)
- ?~ file
- ?~ fire
- [[~ ~] dock]
- [[fire road] dock]
- ?~ fire
- [[file loaf] dock]
- =^ fell dock wean
- ?: safe.mole
- :_ dock
- :- `fell
- [[%hud fell u.file] [%tul fell u.fire] (weld loaf road)]
- :_ dock
- :- `fell
- [[%hed fell u.file] [%tal fell u.fire] (weld loaf road)]
- ==
- ?~ fine
- =^ crap dock wean :: no uses in the plow, so just make a trash register for the result and return
- =^ her dock (mend %peel ~ [%hop hill])
- [[crap her] dock]
- =^ her dock (mend %peel load [%hop hill]) :: loads necessary, add those to the dock and return
- [[u.fine her] dock]
-
- --
- ++ rake :: clean up unused basic blocks, and rewrite bec/eye into cal/jmp
- =* this .
- |= work=(list barn)
- ^- _this
- ?~ work this
- %= $
- burg
- =+ ~| %barn-miss (~(got by land.burg) i.work)
- ^- town
- =| loch=lake
- =| sigh=(map @ $%([%mov @] [%con @ @] [%rug ~]))
- =/ tack=[(list berm) (list berm)] [[(vent i.work) ~] ~] :: label queue
- |- ^- town :: loop over basic blocks using a queue
- ?~ -.tack
- ?~ +.tack
- %= burg
- land
- (~(put by land.burg) i.work [[loch uses.does lump.does] says])
- ==
- $(tack [(flop +.tack) ~])
- =/ hock ~| %miss-berm ~| i.-.tack (~(got by goes.does) i.-.tack)
- =/ bock body.hock
- |^ ^- town :: loop over instructions in a basic block
- ?~ body.hock
- ?: ?=(%bec -.bend.hock)
- (rend [+< +>- `+>+]:bend.hock)
- ?: ?=(%eye -.bend.hock)
- (rend [+< +> ~]:bend.hock)
- =. loch (~(put by loch) i.-.tack [bock bend.hock])
- ?- bend.hock
- [%clq *]
- ^$(-.tack t.-.tack, +.tack [+>-.bend.hock +>+.bend.hock +.tack])
- ::
- [%eqq *]
- ^$(-.tack t.-.tack, +.tack [+>+<.bend.hock +>+>.bend.hock +.tack])
- ::
- [%brn *]
- ^$(-.tack t.-.tack, +.tack [+>-.bend.hock +>+.bend.hock +.tack])
- ::
- [%hop *]
- ^$(-.tack t.-.tack, +.tack [+.bend.hock +.tack])
- ::
- [%lnk *]
- %= ^$
- sigh (~(put by sigh) +>+<.bend.hock [%rug ~])
- -.tack t.-.tack
- +.tack [+>+>.bend.hock +.tack]
- ==
- ::
- [%cal *]
- %= ^$
- sigh (~(put by sigh) +>+<.bend.hock [%rug ~])
- -.tack t.-.tack
- +.tack [+>+>.bend.hock +.tack]
- ==
- ::
- [%lnt *] ^$(-.tack t.-.tack)
- [%jmp *] ^$(-.tack t.-.tack)
- [%spy *]
- %= ^$
- sigh (~(put by sigh) +>+<.bend.hock [%rug ~])
- -.tack t.-.tack
- +.tack [+>+>.bend.hock +.tack]
- ==
- ::
- [%hnt *]
- ^$(-.tack t.-.tack, +.tack [+>.bend.hock +.tack])
- ::
- [%don *] ^$(-.tack t.-.tack)
- [%bom *] ^$(-.tack t.-.tack)
- ==
- ?- i.body.hock
- [%imm *] :: XX we should split immediates too
- $(body.hock t.body.hock, sigh (~(put by sigh) +>.i.body.hock [%rug ~]))
- ::
- [%mov *]
- %= $
- body.hock t.body.hock
- sigh (~(put by sigh) +>.i.body.hock [%mov +<.i.body.hock])
- ==
- ::
- [%inc *]
- $(body.hock t.body.hock, sigh (~(put by sigh) +>.i.body.hock [%rug ~]))
- ::
- [%unc *]
- $(body.hock t.body.hock, sigh (~(put by sigh) +>.i.body.hock [%rug ~]))
- ::
- [%con *]
- %= $
- body.hock t.body.hock
- sigh
- %+ ~(put by sigh)
- +>+.i.body.hock
- [%con +<.i.body.hock +>-.i.body.hock]
- ==
- ::
- [%hed @ @]
- $(body.hock t.body.hock, sigh (~(put by sigh) +>.i.body.hock [%rug ~]))
- ::
- [%hud @ @]
- $(body.hock t.body.hock, sigh (~(put by sigh) +>.i.body.hock [%rug ~]))
- ::
- [%tal @ @]
- $(body.hock t.body.hock, sigh (~(put by sigh) +>.i.body.hock [%rug ~]))
- ::
- [%tul @ @]
- $(body.hock t.body.hock, sigh (~(put by sigh) +>.i.body.hock [%rug ~]))
- ==
- ++ rend :: make register assignments to translate a bec/eye into a cal/jmp.
- |= [=barn tart=@ poem=(unit [@ berm])]
- =/ uses ~| %uses-miss uses:does:(~(got by land.burg) barn)
- ^- town
- =-
- =. burg fort
- =? sigh ?=([~ *] poem) (~(put by sigh) -.u.poem [%rug ~])
- =/ term
- ?~ poem
- [%jmp barn bits]
- [%cal barn bits u.poem]
- %= ^^$
- loch
- (~(put by loch) i.-.tack [(weld bock bins) term])
- ::
- -.tack t.-.tack
- ==
- =/ gasp :: turn the sigh register-relating map into a register-for-axis map
- =/ axe 1
- |- ^- (map @ @)
- =/ waft (~(put by *(map @ @)) axe tart)
- =/ puff (~(gut by sigh) tart [%rug ~])
- ?- puff
- [%rug ~] waft
- [%mov *] (~(uni by waft) $(tart +.puff))
- [%con *]
- =/ left $(tart +<.puff, axe (peg axe 2))
- %- ~(uni by waft)
- %- ~(uni by left)
- $(tart +>.puff, axe (peg axe 3))
- ==
- =| bits=(list @)
- =| bins=(list bran)
- |- ^- [bits=(list @) bins=(list bran) fort=town]
- ?~ uses [(flop bits) bins burg]
- =/ sour -.i.uses
- =/ axle 1
- =/ vale ~| %vale-miss (~(got by gasp) 1)
- |- ^- [bits=(list @) bins=(list bran) fort=town]
- ?: =(1 sour)
- ^$(bits [vale bits], uses t.uses)
- ?- (cap sour)
- %2
- =. axle (peg axle 2)
- =. sour (mas sour)
- =/ pale (~(get by gasp) axle)
- ?~ pale
- %= $
- bins [[%hed vale lamb.burg] bins]
- vale lamb.burg
- gasp (~(put by gasp) axle lamb.burg)
- lamb.burg .+(lamb.burg)
- ==
- $(vale u.pale)
- ::
- %3
- =. axle (peg axle 3)
- =. sour (mas sour)
- =/ pale (~(get by gasp) axle)
- ?~ pale
- %= $
- bins [[%tal vale lamb.burg] bins]
- vale lamb.burg
- gasp (~(put by gasp) axle lamb.burg)
- lamb.burg .+(lamb.burg)
- ==
- $(vale u.pale)
- ==
- --
- ::
- work t.work
- ==
- ++ weed :: remove unused safe operations (imm,mov,unc,con,hud,tul)
- =* this .
- |= work=(list barn)
- ^- _this
- ?~ work this
- =/ herd (~(got by land.burg) i.work) :: sack for this arm
- =| dead=(jug berm @) :: values used by a label and its successor code
- =/ furs=(list berm) [[sub for 1 %vent]:i.work ~]
- |- ^- _this
- ?~ furs
- ^$(work t.work, land.burg (~(put by land.burg) i.work herd))
- ?: (~(has by dead) i.furs) :: did we already analyze this arm
- $(furs t.furs)
- =/ meat (~(got by goes.does.herd) i.furs)
- |^
- ?- -.bend.meat
- %clq
- =/ troo (~(get by dead) +>-.bend.meat)
- ?~ troo $(furs [+>-.bend.meat furs])
- =/ fals (~(get by dead) +>+.bend.meat)
- ?~ fals $(furs [+>+.bend.meat furs])
- ~! u.troo
- ~! u.fals
- ~! +<.bend.meat
- (vein (~(uni in u.troo) (~(put in u.fals) +<.bend.meat)))
- ::
- %eqq
- =/ troo (~(get by dead) +>+<.bend.meat)
- ?~ troo $(furs [+>+<.bend.meat furs])
- =/ fals (~(get by dead) +>+>.bend.meat)
- ?~ fals $(furs [+>+>.bend.meat furs])
- (vein (~(uni in u.troo) (~(gas in u.fals) [+<.bend.meat +>-.bend.meat ~])))
- ::
- %brn
- =/ troo (~(get by dead) +>-.bend.meat)
- ?~ troo $(furs [+>-.bend.meat furs])
- =/ fals (~(get by dead) +>+.bend.meat)
- ?~ fals $(furs [+>+.bend.meat furs])
- (vein (~(uni in u.troo) (~(put in u.fals) +<.bend.meat)))
- ::
- %hop
- =/ want (~(get by dead) +.bend.meat)
- ?~ want $(furs [+.bend.meat furs])
- (vein u.want)
- ::
- %lnk
- =/ want (~(get by dead) +>+>.bend.meat)
- ?~ want $(furs [+>+>.bend.meat furs])
- (vein (~(gas in u.want) [+<.bend.meat +>-.bend.meat ~]))
- ::
- %cal
- =/ want (~(get by dead) +>+>.bend.meat)
- ?~ want $(furs [+>+>.bend.meat furs])
- (vein (~(gas in u.want) +>-.bend.meat))
- ::
- %bec
- ~| %bec-trip !!
- ::
- %lnt
- (vein (silt [+<.bend.meat]~))
- ::
- %jmp
- (vein (silt +>.bend.meat))
- ::
- %eye
- ~| %eye-trip !!
- ::
- %spy
- =/ want (~(get by dead) +>+>.bend.meat)
- ?~ want $(furs [+>+>.bend.meat furs])
- (vein (~(gas in u.want) [+<.bend.meat +>-.bend.meat ~]))
- ::
- %hnt
- =/ want (~(get by dead) +>.bend.meat)
- ?~ want $(furs [+>.bend.meat furs])
- (vein (~(put in u.want) +<.bend.meat))
- ::
- %don
- (vein (silt [+.bend.meat]~))
- ::
- %bom
- (vein ~)
- ==
- ++ vein
- |= uses=(set @)
- =/ boyd (flop body.meat)
- =| bond=(list bran)
- |- ^- _this
- ~! goes.does.herd
- ~! i.furs
- ?~ boyd
- %= ^^^$
- furs t.furs
- goes.does.herd
- (~(put by goes.does.herd) i.furs [bond bend.meat])
- dead
- (~(put by dead) i.furs uses)
- ==
- ?- -.i.boyd
- %imm
- ?: (~(has in uses) +>.i.boyd)
- $(bond [i.boyd bond], boyd t.boyd)
- $(boyd t.boyd)
- ::
- %mov
- ?: (~(has in uses) +>.i.boyd)
- $(bond [i.boyd bond], boyd t.boyd, uses (~(put in uses) +<.i.boyd))
- $(boyd t.boyd)
- ::
- %inc
- $(bond [i.boyd bond], boyd t.boyd, uses (~(put in uses) +<.i.boyd))
- ::
- %unc
- ?: (~(has in uses) +>.i.boyd)
- $(bond [i.boyd bond], boyd t.boyd, uses (~(put in uses) +<.i.boyd))
- $(boyd t.boyd)
- ::
- %con
- ?: (~(has in uses) +>+.i.boyd)
- %= $
- bond [i.boyd bond]
- boyd t.boyd
- uses (~(gas in uses) [+<.i.boyd +>-.i.boyd ~])
- ==
- $(boyd t.boyd)
- ::
- %hed
- $(bond [i.boyd bond], boyd t.boyd, uses (~(put in uses) +<.i.boyd))
- ::
- %hud
- ?: (~(has in uses) +>.i.boyd)
- $(bond [i.boyd bond], boyd t.boyd, uses (~(put in uses) +<.i.boyd))
- $(boyd t.boyd)
- ::
- %tal
- $(bond [i.boyd bond], boyd t.boyd, uses (~(put in uses) +<.i.boyd))
- ::
- %tul
- ?: (~(has in uses) +>.i.boyd)
- $(bond [i.boyd bond], boyd t.boyd, uses (~(put in uses) +<.i.boyd))
- $(boyd t.boyd)
- ==
- --
- --
|