2015-12-08 04:23:27 +03:00
|
|
|
!::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2013-09-29 00:21:18 +04:00
|
|
|
:::::: :::::: Preface ::::::
|
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
?> ?=(@ .) :: atom subject
|
|
|
|
%. . :: fun with subject
|
2015-12-05 02:59:29 +03:00
|
|
|
|= cud+@ :: call it cud
|
2013-09-29 00:21:18 +04:00
|
|
|
=- ?: =(0 cud) :: if cud is 0
|
|
|
|
all :: then return engine
|
|
|
|
(make:all cud) :: else simple compile
|
|
|
|
^= all :: assemble engine
|
|
|
|
=~ :: volume stack
|
2015-01-27 03:25:27 +03:00
|
|
|
%163 :: version constant
|
2013-09-29 00:21:18 +04:00
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:::::: :::::: volume 0, version stub ::::::
|
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2015-01-27 03:25:27 +03:00
|
|
|
~% %k.163 ~ ~ ::
|
2013-09-29 00:21:18 +04:00
|
|
|
|% ::
|
2015-01-27 03:25:27 +03:00
|
|
|
++ hoon %163 :: version stub
|
2013-09-29 00:21:18 +04:00
|
|
|
-- ::
|
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:::::: :::::: volume 1, Hoon models ::::::
|
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
~% %mood
|
|
|
|
+
|
|
|
|
~
|
|
|
|
|% ::
|
2014-01-04 11:28:16 +04:00
|
|
|
++ abel typo :: original sin: type
|
2015-12-04 01:58:42 +03:00
|
|
|
++ ache |* {a+_+(* *) b+_+(* *)} :: either a or b
|
|
|
|
_%({$| p+b} {$& p+a}) :: b default
|
|
|
|
++ axis @ :: tree address
|
|
|
|
++ bank (list @cF) :: UTF-32 string
|
|
|
|
++ base :: base mold
|
|
|
|
_? {$atom p+odor} :: atom
|
|
|
|
$noun :: any noun
|
|
|
|
$cell :: any cell
|
|
|
|
$bean :: loobean
|
|
|
|
$void :: no nouns
|
|
|
|
$null :: ~ == 0
|
2014-04-03 05:06:45 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ bean ? :: 0=&=yes, 1=|=no
|
|
|
|
++ beer _|(@ {$~ p+twig}) :: simple embed
|
|
|
|
++ beet _| @ :: advanced embed
|
|
|
|
_% {$a p+twig} :: take tape
|
|
|
|
{$b p+twig} :: take manx
|
|
|
|
{$c p+twig} :: take marl
|
|
|
|
{$d p+twig} :: take _+(marl marl)
|
|
|
|
{$e p+twig q+(list tuna)} :: element literal
|
|
|
|
== ::
|
|
|
|
++ bloq @ :: blockclass
|
|
|
|
++ calf {p+(map @ud wine) q+wine} ::
|
|
|
|
++ char @tD :: UTF-8 byte
|
2014-07-01 05:15:56 +04:00
|
|
|
++ chub :: registered battery
|
2015-12-04 01:58:42 +03:00
|
|
|
_: p+(pair chum tyre) :: definition
|
|
|
|
q+* :: battery
|
|
|
|
r+(unit (pair axis chub)) :: parent
|
2014-07-01 05:15:56 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ chum _? lef+term :: jet name
|
|
|
|
{std+term kel+@} :: kelvin version
|
|
|
|
{ven+term pro+term kel+@} :: vendor and product
|
|
|
|
{ven+term pro+term ver+@ kel+@} :: all of the above
|
2015-02-27 09:35:41 +03:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ clue {p+chum q+nock r+(list (pair term nock))} :: battery definition
|
|
|
|
++ coil _: p+?($gold $iron $lead $zinc) :: core type
|
|
|
|
q+type ::
|
|
|
|
r+{p=?($~ ^) q+(map term foot)} ::
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ coin _% {$$ p+dime} ::
|
|
|
|
{$blob p+*} ::
|
|
|
|
{$many p+(list coin)} ::
|
2013-12-09 01:23:03 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ cord @t :: text atom (UTF-8)
|
|
|
|
++ date {{a+? y+@ud} m+@ud t+tarp} :: parsed date
|
|
|
|
++ dime {p+@ta q+@} ::
|
|
|
|
++ dock (pair @p term) :: message target
|
|
|
|
++ each |* {a+_+(* *) b+_+(* *)} :: either a or b
|
|
|
|
_%({$& p+a} {$| p+b}) :: a default
|
|
|
|
++ edge {p+hair q+(unit {p+* q+nail})} :: parsing output
|
|
|
|
++ foot _% {$ash p+twig} :: dry arm, geometric
|
|
|
|
{$elm p+twig} :: wet arm, generic
|
|
|
|
{$oak $~} :: XX not used
|
|
|
|
{$yew p+(map term foot)} :: XX not used
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ gate _+(* *) :: general gate
|
|
|
|
++ hair {p+@ud q+@ud} :: parsing trace
|
|
|
|
++ like |* a+_+(* *) :: generic edge
|
|
|
|
|= b+__(`*`[(hair) ~]) ::
|
2013-09-29 00:21:18 +04:00
|
|
|
:- p=(hair -.b) ::
|
|
|
|
^= q ::
|
|
|
|
?@ +.b ~ ::
|
|
|
|
:- ~ ::
|
2014-01-27 22:49:26 +04:00
|
|
|
u=[p=(a +>-.b) q=[p=(hair -.b) q=(tape +.b)]] ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ limb _|(term _%({$& p+axis} {$| p+@ud q+term})) ::
|
|
|
|
++ line {p+{$leaf p+odor q+@} q+tile} :: %kelp case
|
|
|
|
++ list |* a+_+(* *) :: null-term list
|
|
|
|
_|($~ {i+a t+(list a)}) ::
|
|
|
|
++ lone |*(a+_+(* *) p+a) :: just one thing
|
|
|
|
++ mane _|(@tas {@tas @tas}) :: XML name/space
|
|
|
|
++ manx {g+marx c+marl} :: XML node
|
2014-04-03 05:06:45 +04:00
|
|
|
++ marl (list manx) :: XML node list
|
2015-12-04 01:58:42 +03:00
|
|
|
++ mars {t+{n+$$ a+{i+{n+$$ v+tape} t+$~}} c+$~} :: XML cdata
|
|
|
|
++ mart (list {n+mane v+tape}) :: XML attributes
|
|
|
|
++ marx {n+mane a+mart} :: XML tag
|
|
|
|
++ metl ?($gold $iron $zinc $lead) :: core variance
|
|
|
|
++ noun * :: any noun
|
|
|
|
++ null $~ :: null, nil, etc
|
|
|
|
++ odor @ta :: atom format
|
|
|
|
++ tarp {d+@ud h+@ud m+@ud s+@ud f+(list @ux)} :: parsed time
|
|
|
|
++ time @da :: galactic time
|
|
|
|
++ tree |* a+_+(* *) :: binary tree
|
|
|
|
_|($~ {n+a l+(tree a) r+(tree a)}) ::
|
|
|
|
++ nail {p+hair q+tape} :: parsing input
|
|
|
|
++ numb @ :: just a number
|
|
|
|
++ pair |*({a+_+(* *) b+_+(* *)} {p+a q+b}) :: just a pair
|
|
|
|
++ quid |*({a+_+(* *) b+*} {a __(b)}) :: for =^
|
|
|
|
++ quip |*({a+_+(* *) b+*} {(list a) __(b)}) :: for =^
|
|
|
|
++ wand |* a+(pole _+(* *)) :: hetero list
|
2015-12-05 02:59:29 +03:00
|
|
|
|= b+* ::
|
2015-03-06 12:11:01 +03:00
|
|
|
?~ a ~ ::
|
|
|
|
?@ b ~ ::
|
2015-04-07 22:05:21 +03:00
|
|
|
[i=(-.a -.b) t=$(a +.a, b +.b)] ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ pass @ :: public key
|
2014-04-04 14:00:26 +04:00
|
|
|
++ path (list span) :: filesys location
|
2015-12-04 01:58:42 +03:00
|
|
|
++ pint {p+{p+@ q+@} q+{p+@ q+@}} :: line/column range
|
|
|
|
++ pole |* a+_+(* *) :: nameless list
|
|
|
|
_|($~ {a (pole a)}) ::
|
|
|
|
++ port _: p+axis ::
|
|
|
|
_= q ::
|
|
|
|
_% {$& p+type} ::
|
|
|
|
{$| p+axis q+(list {p+type q+foot})} ::
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ post _: p+axis ::
|
|
|
|
_= q ::
|
|
|
|
_% {$0 p+type} ::
|
|
|
|
{$1 p+axis q+(list {p=type q=foot})} ::
|
|
|
|
{$2 p+twin q+type} ::
|
2013-12-31 23:30:37 +04:00
|
|
|
== ::
|
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ prop _: p+axis ::
|
|
|
|
_= q ::
|
|
|
|
{p=?($~ axis) q+(list {p+type q+foot})} ::
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ qual |* {a+_+(* *) b+_+(* *) c+_+(* *) d+_+(* *)} :: just a quadruple
|
|
|
|
{p+a q+b r+c s+d} ::
|
|
|
|
++ ring @ :: private key
|
|
|
|
++ rule __(|=(nail *edge)) :: parsing rule
|
|
|
|
++ span @ta :: text-atom (ASCII)
|
|
|
|
++ spot {p+path q+pint} :: range in file
|
2015-06-17 00:01:07 +03:00
|
|
|
++ tang (list tank) :: bottom-first error
|
2015-12-04 01:58:42 +03:00
|
|
|
++ tank _% {$leaf p+tape} :: printing formats
|
|
|
|
_: $palm :: backstep list
|
|
|
|
p+{p+tape q+tape r+tape s+tape} ::
|
|
|
|
q+(list tank) ::
|
2014-09-03 04:12:38 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
_: $rose :: flat list
|
|
|
|
p+{p+tape q+tape r+tape} :: mid open close
|
|
|
|
q+(list tank) ::
|
2014-09-03 04:12:38 +04:00
|
|
|
== ::
|
2015-02-09 00:22:33 +03:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ tanq :: future tank
|
|
|
|
_? {$~ p+(list tanq)} :: list of printables
|
|
|
|
{$~ $~ p+tape} :: simple string
|
|
|
|
(pair @tas tanq) :: captioned
|
2015-02-09 00:22:33 +03:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ tape (list char) :: string as list
|
|
|
|
++ term @tas :: ascii symbol
|
2014-01-04 06:59:56 +04:00
|
|
|
++ tiki :: test case
|
2015-12-04 01:58:42 +03:00
|
|
|
_% {$& p+(unit term) q+wing} :: simple wing
|
|
|
|
{$| p+(unit term) q+twig} :: named wing
|
2014-01-04 06:59:56 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ tile _& {p+tile q+tile} :: ordered pair
|
|
|
|
_% {$axil p+base} :: base type
|
|
|
|
{$bark p+term q+tile} :: name
|
|
|
|
{$bush p+tile q+tile} :: pair/tag
|
|
|
|
{$fern p+{i+tile t+(list tile)}} :: plain selection
|
|
|
|
{$herb p+twig} :: gate
|
|
|
|
{$kelp p+{i+line t+(list line)}} :: tag selection
|
|
|
|
{$leaf p+term q+@} :: constant atom
|
|
|
|
{$reed p+tile q+tile} :: atom/cell
|
|
|
|
{$weed p+twig} :: example
|
2013-12-15 11:07:57 +04:00
|
|
|
== ::
|
2014-01-16 10:43:56 +04:00
|
|
|
++ toga :: face control
|
2015-12-04 01:58:42 +03:00
|
|
|
_| p+term :: two togas
|
|
|
|
_% {$0 $~} :: no toga
|
|
|
|
{$1 p+term q+toga} :: deep toga
|
|
|
|
{$2 p+toga q+toga} :: cell toga
|
2013-12-21 02:26:23 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ trap |*(a+_+(* *) __(a)) :: makes perfect sense
|
|
|
|
++ trel |* {a+_+(* *) b+_+(* *) c+_+(* *)} :: just a triple
|
|
|
|
{p+a q+b r+c} ::
|
2014-04-03 05:06:45 +04:00
|
|
|
++ tuna :: tagflow
|
2015-12-04 01:58:42 +03:00
|
|
|
_% {$a p+twig} :: plain text
|
|
|
|
{$b p+twig} :: single tag
|
|
|
|
{$c p+twig} :: simple list
|
|
|
|
{$d p+twig} :: dynamic list
|
|
|
|
{$e p+twig q+(list tuna)} :: element
|
|
|
|
{$f p+(list tuna)} :: subflow
|
2014-04-03 05:06:45 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ twig _& {p+twig q+twig} ::
|
|
|
|
_% ::
|
|
|
|
{$$ p+axis} :: simple leg
|
2014-09-03 04:12:38 +04:00
|
|
|
:: :::::: tiling
|
2015-12-04 01:58:42 +03:00
|
|
|
{$bccm p+tile} :: clam a tile
|
|
|
|
{$bcpt p+wing q+tile} :: whip p into q
|
|
|
|
{$bctr p+tile} :: bunt a tile w/ ^~
|
|
|
|
{$bczp p+base} :: bunt an axil
|
2014-09-03 04:12:38 +04:00
|
|
|
:: :::::: cores
|
2015-12-04 01:58:42 +03:00
|
|
|
{$brcb p+tile q+(map term foot)} :: %gold tray, sample p
|
|
|
|
{$brcl p+twig q+twig} :: %brts by example
|
|
|
|
{$brcn p+(map term foot)} :: %gold core, natural
|
|
|
|
{$brdt p+twig} :: dry %gold trap
|
|
|
|
{$brfs p+tile q+(map term foot)} :: vulcan. %gold tray
|
|
|
|
{$brkt p+twig q+(map term foot)} :: %gold book
|
|
|
|
{$brhp p+twig} :: kick dry %gold trap
|
|
|
|
{$brls p+tile q+twig} :: dry %iron gate
|
|
|
|
{$brpt p+tile q+tile r+twig} :: XX not used
|
|
|
|
{$brtr p+tile q+twig} :: vulcan. wet gate
|
|
|
|
{$brts p+tile q+twig} :: dry %gold gate
|
|
|
|
{$brwt p+twig} :: dry %lead trap
|
2015-11-30 03:55:43 +03:00
|
|
|
:: :::::: molds
|
2015-12-04 01:58:42 +03:00
|
|
|
{$cbbr p+twig q+twig} :: atom fork (reed)
|
|
|
|
{$cbcb p+twig} :: example
|
|
|
|
{$cbcl p+(list twig)} :: tuple
|
|
|
|
{$cbcn p+(list twig)} :: tagged fork (kelp)
|
|
|
|
{$cbls p+twig q+twig} :: function
|
|
|
|
{$cbpm p+twig q+twig} :: pairhead fork (bush)
|
|
|
|
{$cbwt p+(list twig)} :: untagged fork
|
|
|
|
{$cbts p+term q+twig} :: name
|
|
|
|
{$cbzy p+stem} :: symbol
|
|
|
|
{$cbzz p+base} :: base
|
2014-09-03 04:12:38 +04:00
|
|
|
:: :::::: tuples
|
2015-12-04 01:58:42 +03:00
|
|
|
{$clcb p+twig q+twig} :: [q p]
|
|
|
|
{$clcn p+tusk} :: [[p ~] ~]
|
|
|
|
{$clfs p+twig} :: {$$ {$$ p ~] ~]
|
|
|
|
{$clkt p+twig q+twig r+twig s+twig} :: [p q r s]
|
|
|
|
{$clhp p+twig q+twig} :: [p q]
|
|
|
|
{$clls p+twig q+twig r+twig} :: [p q r]
|
|
|
|
{$clsg p+tusk} :: [p ~]
|
|
|
|
{$cltr p+tusk} :: p as a tuple
|
|
|
|
{$clzz p+tusk} :: macro
|
2014-09-03 04:12:38 +04:00
|
|
|
:: :::::: invocations
|
2015-12-04 01:58:42 +03:00
|
|
|
{$cncb p+wing q+tram} :: %+, then cast to p
|
|
|
|
{$cncl p+twig q+twig} :: pull $.p w/ sample q
|
|
|
|
{$cndt p+twig q+twig} :: %-(q p)
|
|
|
|
{$cnhp p+twig q+tusk} :: slam p w/ sample q
|
|
|
|
{$cntr p+wing q+twig r+tram} :: pull p.q w/ changes
|
|
|
|
{$cnkt p+twig q+twig r+twig s+twig} :: slam p w/ :*(q r s)
|
|
|
|
{$cnls p+twig q+twig r+twig} :: slam p w/ :*(q r)
|
|
|
|
{$cnsg p+wing q+twig r+twig} :: pull p from q with r
|
|
|
|
{$cnts p+wing q+tram} :: eval. p w/ q changes
|
|
|
|
{$cnzy p+term} :: pulls limb p
|
|
|
|
{$cnzz p+wing} :: pulls p
|
2014-09-03 04:12:38 +04:00
|
|
|
:: :::::: nock
|
2015-12-04 01:58:42 +03:00
|
|
|
{$dtkt p+twig} :: nock 11 data skyhook
|
|
|
|
{$dtls p+twig} :: nock 4 increment
|
|
|
|
{$dtzy p+term q+@} :: atom constant
|
|
|
|
{$dtzz p+term q+*} :: cubical constant
|
|
|
|
{$dttr p+twig q+twig} :: nock p w/ formula q
|
|
|
|
{$dtts p+twig q+twig} :: nock 5 equality test
|
|
|
|
{$dtwt p+twig} :: nock 3 cell test
|
2014-09-03 04:12:38 +04:00
|
|
|
:: :::::: prettyprinting
|
2015-12-04 01:58:42 +03:00
|
|
|
{$hxgl p+tusk} :: prettyprint tape
|
|
|
|
{$hxgr p+tusk} :: prettyprint tank
|
2014-04-04 14:00:26 +04:00
|
|
|
:: :::::: type conversion
|
2015-12-04 01:58:42 +03:00
|
|
|
{$ktbr p+twig} :: %gold core to %iron
|
|
|
|
{$ktdt p+twig q+twig} :: cast q to type (p q)
|
|
|
|
{$ktls p+twig q+twig} :: cast q to p, verify
|
|
|
|
{$kthx p+twig q+twig} :: cast q to p, verify
|
|
|
|
{$kthp p+tile q+twig} :: cast q to icon of p
|
|
|
|
{$ktpm p+twig} :: %gold core to %zinc
|
|
|
|
{$ktsg p+twig} :: p as static constant
|
|
|
|
{$ktts p+toga q+twig} :: wrap q in toga p
|
|
|
|
{$ktwt p+twig} :: %gold core to %lead
|
2014-04-04 14:00:26 +04:00
|
|
|
:: :::::: hints
|
2015-12-04 01:58:42 +03:00
|
|
|
{$sgbr p+twig q+twig} :: print p if q fails
|
|
|
|
{$sgcb p+twig q+twig} :: put p in q's trace
|
|
|
|
{$sgcn p+chum q+twig r+tyre s+twig} :: mark core for jets
|
|
|
|
{$sgfs p+chum q+twig} :: jet arm in ~% core
|
|
|
|
{$sggl p+_|(term {p+term q+twig}) q+twig} :: hint p to product q
|
|
|
|
{$sggr p+_|(term {p+term q+twig}) q+twig} :: hint p to q
|
|
|
|
{$sgbc p+term q+twig} :: label q, profiling
|
|
|
|
{$sgls p+@ q+twig} :: cache/memoize
|
|
|
|
{$sgpm p+@ud q+twig r+twig} :: print q w/priority
|
|
|
|
{$sgts p+twig q+twig} :: avoid duplication
|
|
|
|
{$sgwt p+@ud q+twig r+twig s+twig} :: hint iff q is yes
|
|
|
|
{$sgzp p+twig q+twig} :: type in stacktrace
|
2014-09-03 04:12:38 +04:00
|
|
|
:: :::::: miscellaneous
|
2015-12-04 01:58:42 +03:00
|
|
|
{$smcl p+twig q+tusk} :: binary to n-ary
|
|
|
|
{$smdt p+twig q+tusk} ::
|
|
|
|
{$smdq p+(list beer)} :: assemble string
|
|
|
|
{$smsg p+twig q+tusk} :: gonads
|
|
|
|
{$smsm p+tile q+twig} :: make sure q is a p
|
2014-09-03 04:12:38 +04:00
|
|
|
:: :::::: compositions
|
2015-12-06 00:37:28 +03:00
|
|
|
{$tsbr p+tile q+twig} :: push bunt: ++(*p q)
|
|
|
|
{$tscl p+tram q+twig} :: p changes then q
|
2015-12-04 01:58:42 +03:00
|
|
|
{$tscn p+twig q+twig} :: XX not used
|
|
|
|
{$tsdt p+wing q+twig r+twig} :: r with p set to q
|
|
|
|
{$tsfs p+twig q+twig} :: XX not used
|
|
|
|
{$tsgl p+twig q+twig} :: +>(q p)
|
|
|
|
{$tshp p+twig q+twig} :: flip push: ++(q p)
|
|
|
|
{$tsgr p+twig q+twig} :: use p as .. of q
|
|
|
|
{$tskt p+twig q+twig r+twig s+twig} :: state machine wing
|
|
|
|
{$tsls p+twig q+twig} :: push p on .. of q
|
|
|
|
{$tspm p+tile q+twig} :: XX not used
|
|
|
|
{$tspt p+tile q+twig} :: XX not used
|
2015-12-06 00:37:28 +03:00
|
|
|
{$tstr p+term q+wing r+twig} :: make a $bull/alias
|
2015-12-04 01:58:42 +03:00
|
|
|
{$tssg p+tusk} :: compose twig list
|
2014-04-04 14:00:26 +04:00
|
|
|
:: :::::: conditionals
|
2015-12-04 01:58:42 +03:00
|
|
|
{$wtbr p+tusk} :: logical OR
|
|
|
|
{$wthp p+wing q+tine} :: select case in q
|
|
|
|
{$wthz p+tiki q+tine} :: tiki %wthp
|
|
|
|
{$wtcl p+twig q+twig r+twig} :: if p, then q, else r
|
|
|
|
{$wtdt p+twig q+twig r+twig} :: unless, ?:(p r q)
|
|
|
|
{$wtkt p+wing q+twig r+twig} :: if p is a cell
|
|
|
|
{$wtkz p+tiki q+twig r+twig} :: tiki %wtkt
|
|
|
|
{$wtgl p+twig q+twig} :: assert |, ?:(p !! q)
|
|
|
|
{$wtgr p+twig q+twig} :: assert &, ?:(p q !!)
|
|
|
|
{$wtls p+wing q+twig r+tine} :: %wthp w/ default
|
|
|
|
{$wtlz p+tiki q+twig r+tine} :: tiki %wtls
|
|
|
|
{$wtpm p+tusk} :: logical AND
|
|
|
|
{$wtpt p+wing q+twig r+twig} :: if p is an atom
|
|
|
|
{$wtpz p+tiki q+twig r+twig} :: tiki %wtpt
|
|
|
|
{$wtsg p+wing q+twig r+twig} :: if p is null
|
|
|
|
{$wtsz p+tiki q+twig r+twig} :: tiki %wtsg
|
|
|
|
{$wtts p+tile q+wing} :: if q is in tile p
|
|
|
|
{$wttz p+tile q+tiki} :: tiki %wtts
|
|
|
|
{$wtzp p+twig} :: logical NOT
|
2014-04-04 14:00:26 +04:00
|
|
|
:: :::::: special
|
2015-12-04 01:58:42 +03:00
|
|
|
{$zpcb p+spot q+twig} :: debug info in trace
|
|
|
|
{$zpcm p+twig q+twig} :: q twig with p type
|
|
|
|
{$zpcn $~} :: obsolete
|
|
|
|
{$zpfs p+twig} :: report .. as error
|
|
|
|
{$zpgr p+twig} :: vase w/ value p
|
|
|
|
{$zpsm p+twig q+twig} :: [type noun] pair
|
|
|
|
{$zpts p+twig} :: Nock formula of p
|
|
|
|
{$zpwt p+_|(p+@ {p+@ q+@}) q+twig} :: restrict hoon vers.
|
|
|
|
{$zpzp $~} :: always crash
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ stem (pair term @) ::
|
|
|
|
++ tine (list {p+tile q+twig}) ::
|
2013-12-15 11:07:57 +04:00
|
|
|
++ tusk (list twig) ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ tyre (list {p+term q+twig}) ::
|
2013-12-15 11:07:57 +04:00
|
|
|
++ tyke (list (unit twig)) ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ tram (list {p+wing q+twig}) ::
|
2014-04-04 14:00:26 +04:00
|
|
|
:: :::::: virtual nock
|
2015-12-04 01:58:42 +03:00
|
|
|
++ nock _& {p+nock q+nock} :: autocons
|
|
|
|
_% {$0 p+@} :: axis select
|
|
|
|
{$1 p+*} :: constant
|
|
|
|
{$2 p+nock q+nock} :: compose
|
|
|
|
{$3 p+nock} :: cell test
|
|
|
|
{$4 p+nock} :: increment
|
|
|
|
{$5 p+nock q+nock} :: equality test
|
|
|
|
{$6 p+nock q+nock r+nock} :: if, then, else
|
|
|
|
{$7 p+nock q+nock} :: serial compose
|
|
|
|
{$8 p+nock q+nock} :: push onto subject
|
|
|
|
{$9 p+@ q+nock} :: select arm and fire
|
|
|
|
{$10 p+_|(@ {p+@ q+nock}) q+nock} :: hint
|
|
|
|
{$11 p+nock} :: grab data from sky
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ tone _% {$0 p+*} :: success
|
|
|
|
{$1 p+(list)} :: blocks
|
|
|
|
{$2 p+(list {@ta *})} :: error ~_s
|
2014-10-22 06:04:27 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ toon _% {$0 p+*} :: success
|
|
|
|
{$1 p+(list)} :: blocks
|
|
|
|
{$2 p+(list tank)} :: stack trace
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ tune _% {$0 p+vase} ::
|
|
|
|
{$1 p+(list)} ::
|
|
|
|
{$2 p+(list {@ta *})} ::
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ twin {p+term q+wing r+axis s+type} :: alias info
|
|
|
|
++ type _| ?($noun $void) :: set all or set none
|
|
|
|
_% {$atom p+term} :: number and format
|
|
|
|
{$bull p+twin q+type} :: wing synonym
|
|
|
|
{$cell p+type q+type} :: ordered pair
|
|
|
|
{$core p+type q+coil} ::
|
|
|
|
{$cube p+* q+type} :: constant
|
|
|
|
{$face p+term q+type} :: name
|
|
|
|
{$fork p+type q+type} :: union/branch
|
|
|
|
{$hold p+(list {p+type q+twig})} :: infinite genrator
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2014-01-27 22:49:26 +04:00
|
|
|
++ typo type :: old type
|
2013-09-29 00:21:18 +04:00
|
|
|
++ udal :: atomic change (%b)
|
2015-12-04 01:58:42 +03:00
|
|
|
_: p+@ud :: blockwidth
|
|
|
|
q+(list {p+@ud q+(unit {p+@ q+@})}) :: indels
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
|
|
|
++ udon :: abstract delta
|
2015-12-04 01:58:42 +03:00
|
|
|
_: p=umph :: preprocessor
|
|
|
|
_= q :: patch
|
|
|
|
_% {$a p+* q+*} :: trivial replace
|
|
|
|
{$b p+udal} :: atomic indel
|
|
|
|
{$c p+(urge)} :: list indel
|
|
|
|
{$d p+upas q+upas} :: tree edit
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
|
|
|
== ::
|
|
|
|
++ umph :: change filter
|
2015-12-04 01:58:42 +03:00
|
|
|
_| _? $a :: no filter
|
|
|
|
$b :: jamfile
|
|
|
|
$c :: LF text
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
_% {$d p+@ud} :: blocklist
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ unce |* a+_+(* *) :: change part
|
|
|
|
_% {$& p+@ud} :: skip[copy]
|
|
|
|
{$| p+(list a) q+(list a)} :: p -> q[chunk]
|
2015-06-12 20:56:30 +03:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ unit |* a+_+(* *) :: maybe
|
|
|
|
_|($~ {$~ u+a}) ::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ upas :: tree change (%d)
|
2015-12-04 01:58:42 +03:00
|
|
|
_& {p+upas q+upas} :: cell
|
|
|
|
_% {$0 p+axis} :: copy old
|
|
|
|
{$1 p+*} :: insert new
|
|
|
|
{$2 p+axis q+udon} :: mutate!
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ urge |*(a+_+(* *) (list (unce a))) :: list change
|
|
|
|
++ vase {p+type q+*} :: type-value pair
|
|
|
|
++ vise {p+typo q+*} :: old vase
|
2014-03-12 23:44:08 +04:00
|
|
|
++ wall (list tape) :: text lines (no \n)
|
|
|
|
++ wain (list cord) :: text lines (no \n)
|
2014-09-02 23:23:39 +04:00
|
|
|
++ wing (list limb) ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ wine :: printable type
|
|
|
|
_| _? $noun ::
|
|
|
|
$path ::
|
|
|
|
$type ::
|
|
|
|
$void ::
|
|
|
|
$wall ::
|
|
|
|
$wool ::
|
|
|
|
$yarn ::
|
|
|
|
== ::
|
|
|
|
_% {$atom p+term} ::
|
|
|
|
{$core p+(list @ta) q+wine} ::
|
|
|
|
{$face p+term q+wine} ::
|
|
|
|
{$list p+term q+wine} ::
|
|
|
|
{$pear p+term q+@} ::
|
|
|
|
{$pick p+(list wine)} ::
|
|
|
|
{$plot p+(list wine)} ::
|
|
|
|
{$stop p+@ud} ::
|
|
|
|
{$tree p+term q+wine} ::
|
|
|
|
{$unit p+term q+wine} ::
|
2013-09-29 00:21:18 +04:00
|
|
|
== ::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ wonk |*(veq+edge ?~(q.veq !! p.u.q.veq)) ::
|
2015-01-15 22:10:29 +03:00
|
|
|
++ worm :: compiler cache
|
2015-12-04 01:58:42 +03:00
|
|
|
_: nes+(set ^) :: ++nest
|
|
|
|
pay+(map (pair type twig) type) :: ++play
|
|
|
|
mit+(map (pair type twig) (pair type nock)) :: ++mint
|
2015-01-15 22:10:29 +03:00
|
|
|
== ::
|
2014-04-22 02:25:35 +04:00
|
|
|
:: ::
|
2015-12-08 04:46:28 +03:00
|
|
|
++ map |* {a+_+(* *) b+_+(* *)} :: associative tree
|
2015-12-04 01:58:42 +03:00
|
|
|
_|($~ {n+{p+a q+b} l+(map a b) r+(map a b)}) ::
|
|
|
|
++ qeu |* a+_+(* *) :: queue
|
|
|
|
_|($~ {n+a l+(qeu a) r+(qeu a)}) ::
|
|
|
|
++ set |* a+_+(* *) :: set
|
|
|
|
_|($~ {n+a l+(set a) r+(set a)}) ::
|
2015-12-08 04:46:28 +03:00
|
|
|
++ jar |*({a+_+(* *) b+_+(* *)} (map a (list b))) :: map of lists
|
|
|
|
++ jug |*({a+_+(* *) b+_+(* *)} (map a (set b))) :: map of sets
|
2013-09-29 00:21:18 +04:00
|
|
|
-- ::
|
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:::::: :::::: volume 2, Hoon libraries and compiler ::::::
|
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
~% %hoon
|
|
|
|
+
|
|
|
|
==
|
2013-12-27 06:43:25 +04:00
|
|
|
%al al
|
2013-09-29 00:21:18 +04:00
|
|
|
%ap ap
|
|
|
|
%ut ut
|
2014-05-20 21:33:59 +04:00
|
|
|
%mute mute
|
2013-09-29 00:21:18 +04:00
|
|
|
%seed seed
|
|
|
|
%show show
|
|
|
|
==
|
|
|
|
|%
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::: ::
|
|
|
|
:::: chapter 2a, basic unsigned math ::::
|
|
|
|
:: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
++ add :: add
|
|
|
|
~/ %add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(0 a) b
|
2013-09-29 00:21:18 +04:00
|
|
|
$(a (dec a), b +(b))
|
|
|
|
::
|
|
|
|
++ cap :: tree head
|
|
|
|
~/ %cap
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@
|
2015-12-08 04:23:27 +03:00
|
|
|
^- ?($2 $3)
|
2013-12-14 01:11:26 +04:00
|
|
|
?- a
|
2015-12-04 01:58:42 +03:00
|
|
|
$2 %2
|
|
|
|
$3 %3
|
|
|
|
?($0 $1) !!
|
2013-12-14 01:11:26 +04:00
|
|
|
* $(a (div a 2))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ dec :: decrement
|
|
|
|
~/ %dec
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %decrement-underflow
|
|
|
|
?< =(0 a)
|
2013-12-17 08:48:40 +04:00
|
|
|
=+ b=0
|
2014-01-21 01:50:54 +04:00
|
|
|
|- ^- @
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(a +(b)) b
|
2013-09-29 00:21:18 +04:00
|
|
|
$(b +(b))
|
|
|
|
::
|
|
|
|
++ div :: divide
|
|
|
|
~/ %div
|
2015-12-04 01:58:42 +03:00
|
|
|
|: [a=`@`1 b=`@`1]
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
|
|
|
~| 'div'
|
|
|
|
?< =(0 b)
|
2013-12-17 08:48:40 +04:00
|
|
|
=+ c=0
|
2013-09-29 00:21:18 +04:00
|
|
|
|-
|
2014-09-03 04:12:38 +04:00
|
|
|
?: (lth a b) c
|
2013-09-29 00:21:18 +04:00
|
|
|
$(a (sub a b), c +(c))
|
|
|
|
::
|
2014-05-21 09:43:21 +04:00
|
|
|
++ fac :: factorial
|
2014-06-02 05:31:32 +04:00
|
|
|
~/ %fac
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@
|
2014-05-21 09:43:21 +04:00
|
|
|
^- @
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(0 a) 1
|
2014-05-21 09:43:21 +04:00
|
|
|
(mul a $(a (dec a)))
|
|
|
|
::
|
2013-12-09 01:23:03 +04:00
|
|
|
++ gte :: greater-equal
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %gte
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
|
|
|
!(lth a b)
|
|
|
|
::
|
|
|
|
++ gth :: greater-than
|
|
|
|
~/ %gth
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
|
|
|
!(lte a b)
|
|
|
|
::
|
|
|
|
++ lte :: less-equal
|
|
|
|
~/ %lte
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
|(=(a b) (lth a b))
|
|
|
|
::
|
|
|
|
++ lth :: less-than
|
|
|
|
~/ %lth
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
2015-06-12 20:56:30 +03:00
|
|
|
?& !=(a b)
|
|
|
|
|-
|
|
|
|
?| =(0 a)
|
|
|
|
?& !=(0 b)
|
2014-09-03 04:12:38 +04:00
|
|
|
$(a (dec a), b (dec b))
|
|
|
|
== == ==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ mas :: tree body
|
|
|
|
~/ %mas
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
|
|
|
?- a
|
2015-12-04 01:58:42 +03:00
|
|
|
$1 !!
|
|
|
|
$2 1
|
|
|
|
$3 1
|
|
|
|
* (add (mod a 2) (mul $(a (div a 2)) 2))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ max :: maximum
|
|
|
|
~/ %max
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
2014-09-03 04:12:38 +04:00
|
|
|
?: (gth a b) a
|
2013-09-29 00:21:18 +04:00
|
|
|
b
|
|
|
|
::
|
|
|
|
++ min :: minimum
|
|
|
|
~/ %min
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
2014-09-03 04:12:38 +04:00
|
|
|
?: (lth a b) a
|
2013-09-29 00:21:18 +04:00
|
|
|
b
|
|
|
|
::
|
|
|
|
++ mod :: remainder
|
|
|
|
~/ %mod
|
2015-12-04 01:58:42 +03:00
|
|
|
|: [a=`@`1 b=`@`1]
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
|
|
|
?< =(0 b)
|
|
|
|
(sub a (mul b (div a b)))
|
|
|
|
::
|
|
|
|
++ mul :: multiply
|
|
|
|
~/ %mul
|
2015-12-04 01:58:42 +03:00
|
|
|
|: [a=`@`1 b=`@`1]
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
2013-12-17 08:48:40 +04:00
|
|
|
=+ c=0
|
2013-09-29 00:21:18 +04:00
|
|
|
|-
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(0 a) c
|
2013-09-29 00:21:18 +04:00
|
|
|
$(a (dec a), c (add b c))
|
|
|
|
::
|
|
|
|
++ peg :: tree connect
|
|
|
|
~/ %peg
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
|
|
|
?- b
|
|
|
|
1 a
|
|
|
|
2 (mul a 2)
|
|
|
|
3 +((mul a 2))
|
|
|
|
* (add (mod b 2) (mul $(b (div b 2)) 2))
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ sub :: subtract
|
|
|
|
~/ %sub
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %subtract-underflow
|
|
|
|
^- @
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(0 b) a
|
2013-09-29 00:21:18 +04:00
|
|
|
$(a (dec a), b (dec b))
|
|
|
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::: ::
|
|
|
|
:::: chapter 2b, basic containers ::::
|
|
|
|
:: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: Section 2bA, units ::
|
|
|
|
::
|
2014-05-09 04:34:57 +04:00
|
|
|
++ biff :: apply
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(unit) b+_+(* (unit))}
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ a ~
|
2014-05-09 04:34:57 +04:00
|
|
|
(b u.a)
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ bind :: argue
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(unit) b+gate}
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ a ~
|
2013-09-29 00:21:18 +04:00
|
|
|
[~ u=(b u.a)]
|
|
|
|
::
|
2014-06-06 15:33:26 +04:00
|
|
|
++ bond :: replace
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+(trap)
|
|
|
|
|* b+(unit)
|
2014-06-06 15:33:26 +04:00
|
|
|
?~ b $:a
|
|
|
|
u.b
|
|
|
|
::
|
2014-07-09 11:37:47 +04:00
|
|
|
++ both :: all the above
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(unit) b+(unit)}
|
2014-07-09 11:37:47 +04:00
|
|
|
?~ a ~
|
|
|
|
?~ b ~
|
|
|
|
[~ u=[u.a u.b]]
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ clap :: combine
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(unit) b+(unit) c+__(|=(^ +<-))}
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ a b
|
|
|
|
?~ b a
|
2013-09-29 00:21:18 +04:00
|
|
|
[~ u=(c u.a u.b)]
|
|
|
|
::
|
|
|
|
++ drop :: enlist
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+(unit)
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ a ~
|
2013-09-29 00:21:18 +04:00
|
|
|
[i=u.a t=~]
|
|
|
|
::
|
|
|
|
++ fall :: default
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(unit) b+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
?~(a b u.a)
|
|
|
|
::
|
2014-10-29 23:59:01 +03:00
|
|
|
++ flit :: make filter
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+_+(* ?)
|
2014-10-29 23:59:01 +03:00
|
|
|
|* b=*
|
|
|
|
?.((a b) ~ [~ u=b])
|
|
|
|
::
|
2014-07-29 22:16:35 +04:00
|
|
|
++ lift :: lift gate (fmap)
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+gate :: flipped
|
|
|
|
|* b+(unit) :: curried
|
2014-07-29 22:16:35 +04:00
|
|
|
(bind b a) :: bind
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ mate :: choose
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(unit) b+(unit)}
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ b a
|
|
|
|
?~ a b
|
2013-09-29 00:21:18 +04:00
|
|
|
?.(=(u.a u.b) ~|('mate' !!) a)
|
|
|
|
::
|
|
|
|
++ need :: demand
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+(unit)
|
2015-02-27 09:35:41 +03:00
|
|
|
?~ a ~|(%need !!)
|
2013-09-29 00:21:18 +04:00
|
|
|
u.a
|
|
|
|
::
|
2014-07-29 22:16:35 +04:00
|
|
|
++ some :: lift (pure)
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+*
|
2013-09-29 00:21:18 +04:00
|
|
|
[~ u=a]
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: Section 2bB, lists ::
|
|
|
|
::
|
|
|
|
++ flop :: reverse
|
|
|
|
~/ %flop
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+(list)
|
2013-09-29 00:21:18 +04:00
|
|
|
=> .(a (homo a))
|
|
|
|
^+ a
|
|
|
|
=+ b=`_a`~
|
|
|
|
|-
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ a b
|
2013-09-29 00:21:18 +04:00
|
|
|
$(a t.a, b [i.a b])
|
|
|
|
::
|
|
|
|
++ homo :: homogenize
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+(list)
|
2013-12-21 11:46:49 +04:00
|
|
|
^+ =< $
|
2014-10-31 20:56:33 +03:00
|
|
|
|% +- $ ?:(*? ~ [i=(snag 0 a) t=$])
|
2013-12-21 11:46:49 +04:00
|
|
|
--
|
2013-09-29 00:21:18 +04:00
|
|
|
a
|
|
|
|
::
|
2013-12-21 06:35:33 +04:00
|
|
|
++ limo :: listify
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+*
|
2013-12-21 06:35:33 +04:00
|
|
|
^+ =< $
|
2014-10-31 20:56:33 +03:00
|
|
|
|% +- $ ?~(a ~ ?:(*? [i=-.a t=$] $(a +.a)))
|
2013-12-21 06:35:33 +04:00
|
|
|
--
|
|
|
|
a
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ lent :: length
|
|
|
|
~/ %lent
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+(list)
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
2013-12-17 08:48:40 +04:00
|
|
|
=+ b=0
|
2013-09-29 00:21:18 +04:00
|
|
|
|-
|
2015-06-12 20:56:30 +03:00
|
|
|
?~ a b
|
2014-09-03 04:12:38 +04:00
|
|
|
$(a t.a, b +(b))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ levy
|
|
|
|
~/ %levy :: all of
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(list) b+_+(* ?)}
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- ?
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ a &
|
|
|
|
?. (b i.a) |
|
|
|
|
$(a t.a)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ lien :: some of
|
|
|
|
~/ %lien
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(list) b+_+(* ?)}
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- ?
|
2013-11-03 05:29:28 +04:00
|
|
|
?~ a |
|
|
|
|
?: (b i.a) &
|
2013-09-29 00:21:18 +04:00
|
|
|
$(a t.a)
|
|
|
|
::
|
2014-07-14 19:28:48 +04:00
|
|
|
++ murn :: maybe transform
|
2015-09-14 21:31:02 +03:00
|
|
|
~/ %murn
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(list) b+_+(* (unit))}
|
2014-07-02 23:44:37 +04:00
|
|
|
|-
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ a ~
|
2014-07-02 23:44:37 +04:00
|
|
|
=+ c=(b i.a)
|
|
|
|
?~ c
|
|
|
|
$(a t.a)
|
|
|
|
[i=u.c t=$(a t.a)]
|
2014-07-02 19:11:23 +04:00
|
|
|
::
|
2014-07-14 19:28:48 +04:00
|
|
|
++ reap :: replicate
|
2015-09-16 23:29:39 +03:00
|
|
|
~/ %reap
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+@ b+*}
|
|
|
|
|- ^- (list __(b))
|
2014-10-14 04:48:22 +04:00
|
|
|
?~ a ~
|
|
|
|
[b $(a (dec a))]
|
2014-07-14 19:28:48 +04:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ reel :: right fold
|
|
|
|
~/ %reel
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(list) b+__(|=({* *} +<+))}
|
2014-06-29 03:47:49 +04:00
|
|
|
|- ^+ +<+.b
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2014-06-29 03:47:49 +04:00
|
|
|
+<+.b
|
2013-09-29 00:21:18 +04:00
|
|
|
(b i.a $(a t.a))
|
|
|
|
::
|
|
|
|
++ roll :: left fold
|
|
|
|
~/ %roll
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(list) b+__(|=({* *} +<+))}
|
2014-06-29 03:47:49 +04:00
|
|
|
|- ^+ +<+.b
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2014-06-29 03:47:49 +04:00
|
|
|
+<+.b
|
|
|
|
$(a t.a, b b(+<+ (b i.a +<+.b)))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-01-13 01:49:05 +03:00
|
|
|
++ skid :: separate
|
2015-09-19 19:50:39 +03:00
|
|
|
~/ %skid
|
2015-12-08 04:46:28 +03:00
|
|
|
|* {a+(list) b+_+(* ?)}
|
2015-01-13 01:49:05 +03:00
|
|
|
|- ^+ [p=a q=a]
|
|
|
|
?~ a [~ ~]
|
|
|
|
=+ c=$(a t.a)
|
|
|
|
?:((b i.a) [[i.a p.c] q.c] [p.c [i.a q.c]])
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ skim :: only
|
|
|
|
~/ %skim
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(list) b+_+(* ?)}
|
2014-09-02 23:23:39 +04:00
|
|
|
|-
|
|
|
|
^+ a
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ a ~
|
2014-09-02 23:23:39 +04:00
|
|
|
?:((b i.a) [i.a $(a t.a)] $(a t.a))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ skip :: except
|
|
|
|
~/ %skip
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(list) b+_+(* ?)}
|
2014-09-02 23:23:39 +04:00
|
|
|
|-
|
|
|
|
^+ a
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ a ~
|
2014-09-02 23:23:39 +04:00
|
|
|
?:((b i.a) $(a t.a) [i.a $(a t.a)])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ scag :: prefix
|
2014-05-27 21:22:21 +04:00
|
|
|
~/ %scag
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+@ b+(list)}
|
2013-12-20 21:34:13 +04:00
|
|
|
|- ^+ b
|
2015-12-05 02:59:29 +03:00
|
|
|
?: |(?=($~ b) =(0 a)) ~
|
2013-09-29 00:21:18 +04:00
|
|
|
[i.b $(b t.b, a (dec a))]
|
2013-12-09 01:23:03 +04:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ slag :: suffix
|
2014-05-27 00:33:17 +04:00
|
|
|
~/ %slag
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+@ b+(list)}
|
2013-12-20 21:34:13 +04:00
|
|
|
|- ^+ b
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(0 a) b
|
|
|
|
?~ b ~
|
2013-09-29 00:21:18 +04:00
|
|
|
$(b t.b, a (dec a))
|
|
|
|
::
|
|
|
|
++ snag :: index
|
|
|
|
~/ %snag
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+@ b+(list)}
|
2013-12-20 21:34:13 +04:00
|
|
|
|-
|
2014-09-02 23:23:39 +04:00
|
|
|
?~ b
|
|
|
|
~|('snag-fail' !!)
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(0 a) i.b
|
2013-09-29 00:21:18 +04:00
|
|
|
$(b t.b, a (dec a))
|
|
|
|
::
|
|
|
|
++ sort :: quicksort
|
|
|
|
~/ %sort
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(list) b+_+([* *] ?)}
|
2014-01-21 01:50:54 +04:00
|
|
|
=> .(a ^.(homo a))
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ a
|
|
|
|
?~ a ~
|
|
|
|
%+ weld
|
2015-12-05 02:59:29 +03:00
|
|
|
$(a (skim t.a |=(c+__(i.a) (b c i.a))))
|
2013-12-24 00:49:15 +04:00
|
|
|
^+ t.a
|
2015-12-05 02:59:29 +03:00
|
|
|
[i.a $(a (skim t.a |=(c+__(i.a) !(b c i.a))))]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ swag :: infix
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {{a+@ b+@} c+(list)}
|
2013-09-29 00:21:18 +04:00
|
|
|
(scag b (slag a c))
|
|
|
|
::
|
|
|
|
++ turn :: transform
|
|
|
|
~/ %turn
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(list) b+_+(* *)}
|
2013-09-29 00:21:18 +04:00
|
|
|
|-
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ a ~
|
2013-09-29 00:21:18 +04:00
|
|
|
[i=(b i.a) t=$(a t.a)]
|
|
|
|
::
|
|
|
|
++ weld :: concatenate
|
|
|
|
~/ %weld
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+(list) b+(list)}
|
2014-01-21 01:50:54 +04:00
|
|
|
=> .(a ^.(homo a), b ^.(homo b))
|
|
|
|
|- ^+ b
|
|
|
|
?~ a b
|
2013-09-29 00:21:18 +04:00
|
|
|
[i.a $(a t.a)]
|
2014-01-21 01:50:54 +04:00
|
|
|
::
|
2014-04-03 05:06:45 +04:00
|
|
|
++ welp :: perfect weld
|
2015-12-04 01:58:42 +03:00
|
|
|
=| {* *}
|
2014-04-03 05:06:45 +04:00
|
|
|
|%
|
|
|
|
+- $
|
|
|
|
?~ +<-
|
|
|
|
+<-(. +<+)
|
|
|
|
+<-(+ $(+<- +<->))
|
|
|
|
--
|
|
|
|
::
|
2014-03-08 04:31:36 +04:00
|
|
|
++ zing :: promote
|
2014-07-02 23:44:37 +04:00
|
|
|
=| *
|
|
|
|
|%
|
|
|
|
+- $
|
|
|
|
?~ +<
|
|
|
|
+<
|
|
|
|
(welp +<- $(+< +<+))
|
|
|
|
--
|
2013-09-29 00:21:18 +04:00
|
|
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::: ::
|
|
|
|
:::: chapter 2c, simple noun surgery ::::
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2cA, bit surgery ::
|
|
|
|
::
|
|
|
|
++ bex :: binary exponent
|
|
|
|
~/ %bex
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(0 a) 1
|
2013-09-29 00:21:18 +04:00
|
|
|
(mul 2 $(a (dec a)))
|
|
|
|
::
|
2014-05-02 09:41:33 +04:00
|
|
|
++ xeb :: binary logarithm
|
2015-08-27 13:31:10 +03:00
|
|
|
~/ %xeb
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@
|
2014-05-02 09:41:33 +04:00
|
|
|
^- @
|
|
|
|
(met 0 a)
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ can :: assemble
|
|
|
|
~/ %can
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+bloq b+(list {p+@u q+@})}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ b 0
|
2013-09-29 00:21:18 +04:00
|
|
|
(mix (end a p.i.b q.i.b) (lsh a p.i.b $(b t.b)))
|
|
|
|
::
|
|
|
|
++ cat :: concatenate
|
|
|
|
~/ %cat
|
2015-12-05 02:59:29 +03:00
|
|
|
|= {a+bloq b+@ c+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
(add (lsh a (met a b) c) b)
|
|
|
|
::
|
|
|
|
++ cut :: slice
|
|
|
|
~/ %cut
|
2015-12-05 02:59:29 +03:00
|
|
|
|= {a+bloq {b+@u c+@u} d+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
(end a c (rsh a b d))
|
|
|
|
::
|
|
|
|
++ end :: tail
|
|
|
|
~/ %end
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+bloq b+@u c+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
(mod c (bex (mul (bex a) b)))
|
|
|
|
::
|
2014-05-02 08:16:40 +04:00
|
|
|
++ fil :: fill bloqstream
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+bloq b+@u c+@}
|
2014-05-02 08:16:40 +04:00
|
|
|
=+ n=0
|
|
|
|
=+ d=c
|
|
|
|
|- ^- @
|
|
|
|
?: =(n b)
|
|
|
|
(rsh a 1 d)
|
|
|
|
$(d (add c (lsh a 1 d)), n +(n))
|
2014-05-02 10:42:44 +04:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ lsh :: left-shift
|
|
|
|
~/ %lsh
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+bloq b+@u c+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
(mul (bex (mul (bex a) b)) c)
|
|
|
|
::
|
|
|
|
++ met :: measure
|
|
|
|
~/ %met
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+bloq b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
|
|
|
=+ c=0
|
|
|
|
|-
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(0 b) c
|
2013-09-29 00:21:18 +04:00
|
|
|
$(b (rsh a 1 b), c +(c))
|
|
|
|
::
|
|
|
|
++ rap :: assemble nonzero
|
|
|
|
~/ %rap
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+bloq b+(list @)}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ b 0
|
2013-09-29 00:21:18 +04:00
|
|
|
(cat a i.b $(b t.b))
|
|
|
|
::
|
|
|
|
++ rep :: assemble single
|
|
|
|
~/ %rep
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+bloq b+(list @)}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
|
|
|
=+ c=0
|
|
|
|
|-
|
2014-09-03 04:12:38 +04:00
|
|
|
?~ b 0
|
2013-09-29 00:21:18 +04:00
|
|
|
(con (lsh a c (end a 1 i.b)) $(c +(c), b t.b))
|
|
|
|
::
|
|
|
|
++ rip :: disassemble
|
|
|
|
~/ %rip
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+bloq b+@}
|
2015-12-04 18:16:34 +03:00
|
|
|
^- (list @)
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(0 b) ~
|
2013-09-29 00:21:18 +04:00
|
|
|
[(end a 1 b) $(b (rsh a 1 b))]
|
|
|
|
::
|
|
|
|
++ rsh :: right-shift
|
|
|
|
~/ %rsh
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+bloq b+@u c+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
(div c (bex (mul (bex a) b)))
|
2014-05-02 08:17:49 +04:00
|
|
|
::
|
2015-12-05 02:59:29 +03:00
|
|
|
++ swap |=({a+bloq b+@} (rep a (flop (rip a b)))) :: reverse bloq order
|
2014-05-02 08:16:40 +04:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2cB, bit logic ::
|
|
|
|
::
|
|
|
|
++ con :: binary or
|
|
|
|
~/ %con
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ [c=0 d=0]
|
|
|
|
|- ^- @
|
2014-09-03 04:12:38 +04:00
|
|
|
?: ?&(=(0 a) =(0 b)) d
|
2013-09-29 00:21:18 +04:00
|
|
|
%= $
|
|
|
|
a (rsh 0 1 a)
|
|
|
|
b (rsh 0 1 b)
|
|
|
|
c +(c)
|
2015-06-12 20:56:30 +03:00
|
|
|
d %+ add d
|
|
|
|
%^ lsh 0 c
|
|
|
|
?& =(0 (end 0 1 a))
|
2014-09-03 04:12:38 +04:00
|
|
|
=(0 (end 0 1 b))
|
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ dis :: binary and
|
|
|
|
~/ %dis
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
|
|
|
=| {c+@ d+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- @
|
2014-09-03 04:12:38 +04:00
|
|
|
?: ?|(=(0 a) =(0 b)) d
|
2013-09-29 00:21:18 +04:00
|
|
|
%= $
|
|
|
|
a (rsh 0 1 a)
|
|
|
|
b (rsh 0 1 b)
|
|
|
|
c +(c)
|
2015-06-12 20:56:30 +03:00
|
|
|
d %+ add d
|
|
|
|
%^ lsh 0 c
|
|
|
|
?| =(0 (end 0 1 a))
|
2014-09-03 04:12:38 +04:00
|
|
|
=(0 (end 0 1 b))
|
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ mix :: binary xor
|
|
|
|
~/ %mix
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
|
|
|
=+ [c=0 d=0]
|
|
|
|
|-
|
2014-09-03 04:12:38 +04:00
|
|
|
?: ?&(=(0 a) =(0 b)) d
|
2013-09-29 00:21:18 +04:00
|
|
|
%= $
|
|
|
|
a (rsh 0 1 a)
|
|
|
|
b (rsh 0 1 b)
|
|
|
|
c +(c)
|
|
|
|
d (add d (lsh 0 c =((end 0 1 a) (end 0 1 b))))
|
|
|
|
==
|
2014-04-28 03:19:58 +04:00
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ not |= {a+bloq b+@ c+@} :: binary not (sized)
|
2014-04-28 03:19:58 +04:00
|
|
|
(mix c (dec (bex (mul b (bex a)))))
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2cC, noun orders ::
|
|
|
|
::
|
|
|
|
++ aor :: a-order
|
|
|
|
~/ %aor
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+* b+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(a b) &
|
2013-09-29 00:21:18 +04:00
|
|
|
?. ?=(@ a)
|
2014-09-03 04:12:38 +04:00
|
|
|
?: ?=(@ b) |
|
|
|
|
?: =(-.a -.b)
|
|
|
|
$(a +.a, b +.b)
|
|
|
|
$(a -.a, b -.b)
|
|
|
|
?. ?=(@ b) &
|
2013-09-29 00:21:18 +04:00
|
|
|
|-
|
|
|
|
=+ [c=(end 3 1 a) d=(end 3 1 b)]
|
|
|
|
?: =(c d)
|
2013-12-09 01:23:03 +04:00
|
|
|
$(a (rsh 3 1 a), b (rsh 3 1 b))
|
2013-09-29 00:21:18 +04:00
|
|
|
(lth c d)
|
2013-12-09 01:23:03 +04:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ dor :: d-order
|
|
|
|
~/ %dor
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+* b+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
2014-09-03 04:12:38 +04:00
|
|
|
?: =(a b) &
|
2013-09-29 00:21:18 +04:00
|
|
|
?. ?=(@ a)
|
2014-09-03 04:12:38 +04:00
|
|
|
?: ?=(@ b) |
|
|
|
|
?: =(-.a -.b)
|
|
|
|
$(a +.a, b +.b)
|
|
|
|
$(a -.a, b -.b)
|
|
|
|
?. ?=(@ b) &
|
2013-09-29 00:21:18 +04:00
|
|
|
(lth a b)
|
|
|
|
::
|
|
|
|
++ gor :: g-order
|
|
|
|
~/ %gor
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+* b+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
|
|
|
=+ [c=(mug a) d=(mug b)]
|
|
|
|
?: =(c d)
|
|
|
|
(dor a b)
|
|
|
|
(lth c d)
|
|
|
|
::
|
|
|
|
++ hor :: h-order
|
|
|
|
~/ %hor
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+* b+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
|
|
|
?: ?=(@ a)
|
2014-09-03 04:12:38 +04:00
|
|
|
?. ?=(@ b) &
|
|
|
|
(gor a b)
|
|
|
|
?: ?=(@ b) |
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(-.a -.b)
|
|
|
|
(gor +.a +.b)
|
|
|
|
(gor -.a -.b)
|
|
|
|
::
|
2015-11-29 01:44:29 +03:00
|
|
|
++ lor :: l-order
|
|
|
|
~/ %lor
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {a+* b+*}
|
2015-11-29 01:44:29 +03:00
|
|
|
^- ?
|
|
|
|
?: =(a b) &
|
|
|
|
?@ a
|
|
|
|
?^ b &
|
|
|
|
(lth a b)
|
|
|
|
?: =(-.a -.b)
|
|
|
|
$(a +.a, b +.b)
|
|
|
|
$(a -.a, b -.b)
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ vor :: v-order
|
|
|
|
~/ %vor
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+* b=*}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
|
|
|
=+ [c=(mug (mug a)) d=(mug (mug b))]
|
|
|
|
?: =(c d)
|
|
|
|
(dor a b)
|
|
|
|
(lth c d)
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2cD, insecure hashing ::
|
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ fnv |=(a+@ (end 5 1 (mul 16.777.619 a))) :: FNV scrambler
|
2014-09-03 00:13:12 +04:00
|
|
|
::
|
|
|
|
++ mum :: mug with murmur3
|
|
|
|
~/ %mum
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+*
|
2014-09-03 00:13:12 +04:00
|
|
|
|^ (trim ?@(a a (mix $(a -.a) (mix 0x7fff.ffff $(a +.a)))))
|
|
|
|
++ spec :: standard murmur3
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {syd+@ key+@}
|
2014-09-03 00:13:12 +04:00
|
|
|
?> (lte (met 5 syd) 1)
|
|
|
|
=+ ^= row
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2014-09-03 00:13:12 +04:00
|
|
|
(con (end 5 1 (lsh 0 a b)) (rsh 0 (sub 32 a) b))
|
2015-12-04 01:58:42 +03:00
|
|
|
=+ mow=|=({a+@ b+@} (end 5 1 (mul a b)))
|
2014-09-03 00:13:12 +04:00
|
|
|
=+ len=(met 5 key)
|
|
|
|
=- =. goc (mix goc len)
|
|
|
|
=. goc (mix goc (rsh 4 1 goc))
|
|
|
|
=. goc (mow goc 0x85eb.ca6b)
|
|
|
|
=. goc (mix goc (rsh 0 13 goc))
|
|
|
|
=. goc (mow goc 0xc2b2.ae35)
|
|
|
|
(mix goc (rsh 4 1 goc))
|
|
|
|
^= goc
|
|
|
|
=+ [inx=0 goc=syd]
|
|
|
|
|- ^- @
|
|
|
|
?: =(inx len) goc
|
|
|
|
=+ kop=(cut 5 [inx 1] key)
|
|
|
|
=. kop (mow kop 0xcc9e.2d51)
|
2015-06-12 20:56:30 +03:00
|
|
|
=. kop (row 15 kop)
|
2014-09-03 00:13:12 +04:00
|
|
|
=. kop (mow kop 0x1b87.3593)
|
|
|
|
=. goc (mix kop goc)
|
|
|
|
=. goc (row 13 goc)
|
|
|
|
=. goc (end 5 1 (add 0xe654.6b64 (mul 5 goc)))
|
|
|
|
$(inx +(inx))
|
|
|
|
::
|
|
|
|
++ trim :: 31-bit nonzero
|
2015-12-04 01:58:42 +03:00
|
|
|
|= key+@
|
2014-09-03 00:13:12 +04:00
|
|
|
=+ syd=0xcafe.babe
|
|
|
|
|- ^- @
|
|
|
|
=+ haz=(spec syd key)
|
|
|
|
=+ ham=(mix (rsh 0 31 haz) (end 0 31 haz))
|
|
|
|
?.(=(0 ham) ham $(syd +(syd)))
|
|
|
|
--
|
2014-08-26 23:11:59 +04:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ mug :: 31bit nonzero FNV1a
|
|
|
|
~/ %mug
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+*
|
2013-09-29 00:21:18 +04:00
|
|
|
?^ a
|
|
|
|
=+ b=[p=$(a -.a) q=$(a +.a)]
|
|
|
|
|- ^- @
|
|
|
|
=+ c=(fnv (mix p.b (fnv q.b)))
|
|
|
|
=+ d=(mix (rsh 0 31 c) (end 0 31 c))
|
|
|
|
?. =(0 c) c
|
|
|
|
$(q.b +(q.b))
|
|
|
|
=+ b=2.166.136.261
|
|
|
|
|- ^- @
|
|
|
|
=+ c=b
|
|
|
|
=+ [d=0 e=(met 3 a)]
|
|
|
|
|- ^- @
|
|
|
|
?: =(d e)
|
|
|
|
=+ f=(mix (rsh 0 31 c) (end 0 31 c))
|
|
|
|
?. =(0 f) f
|
|
|
|
^$(b +(b))
|
|
|
|
$(c (fnv (mix c (cut 3 [d 1] a))), d +(d))
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2cE, phonetic base ::
|
|
|
|
::
|
|
|
|
++ po
|
2013-12-09 01:23:03 +04:00
|
|
|
~/ %po
|
2014-09-03 04:12:38 +04:00
|
|
|
=+ :- ^= sis :: prefix syllables
|
|
|
|
'dozmarbinwansamlitsighidfidlissogdirwacsabwissib\
|
|
|
|
/rigsoldopmodfoglidhopdardorlorhodfolrintogsilmir\
|
|
|
|
/holpaslacrovlivdalsatlibtabhanticpidtorbolfosdot\
|
|
|
|
/losdilforpilramtirwintadbicdifrocwidbisdasmidlop\
|
|
|
|
/rilnardapmolsanlocnovsitnidtipsicropwitnatpanmin\
|
|
|
|
/ritpodmottamtolsavposnapnopsomfinfonbanporworsip\
|
|
|
|
/ronnorbotwicsocwatdolmagpicdavbidbaltimtasmallig\
|
|
|
|
/sivtagpadsaldivdactansidfabtarmonranniswolmispal\
|
|
|
|
/lasdismaprabtobrollatlonnodnavfignomnibpagsopral\
|
|
|
|
/bilhaddocridmocpacravripfaltodtiltinhapmicfanpat\
|
|
|
|
/taclabmogsimsonpinlomrictapfirhasbosbatpochactid\
|
|
|
|
/havsaplindibhosdabbitbarracparloddosbortochilmac\
|
|
|
|
/tomdigfilfasmithobharmighinradmashalraglagfadtop\
|
|
|
|
/mophabnilnosmilfopfamdatnoldinhatnacrisfotribhoc\
|
|
|
|
/nimlarfitwalrapsarnalmoslandondanladdovrivbacpol\
|
|
|
|
/laptalpitnambonrostonfodponsovnocsorlavmatmipfap'
|
|
|
|
^= dex :: suffix syllables
|
2013-09-29 00:21:18 +04:00
|
|
|
'zodnecbudwessevpersutletfulpensytdurwepserwylsun\
|
|
|
|
/rypsyxdyrnuphebpeglupdepdysputlughecryttyvsydnex\
|
|
|
|
/lunmeplutseppesdelsulpedtemledtulmetwenbynhexfeb\
|
|
|
|
/pyldulhetmevruttylwydtepbesdexsefwycburderneppur\
|
|
|
|
/rysrebdennutsubpetrulsynregtydsupsemwynrecmegnet\
|
|
|
|
/secmulnymtevwebsummutnyxrextebfushepbenmuswyxsym\
|
|
|
|
/selrucdecwexsyrwetdylmynmesdetbetbeltuxtugmyrpel\
|
|
|
|
/syptermebsetdutdegtexsurfeltudnuxruxrenwytnubmed\
|
|
|
|
/lytdusnebrumtynseglyxpunresredfunrevrefmectedrus\
|
|
|
|
/bexlebduxrynnumpyxrygryxfeptyrtustyclegnemfermer\
|
|
|
|
/tenlusnussyltecmexpubrymtucfyllepdebbermughuttun\
|
|
|
|
/bylsudpemdevlurdefbusbeprunmelpexdytbyttyplevmyl\
|
|
|
|
/wedducfurfexnulluclennerlexrupnedlecrydlydfenwel\
|
|
|
|
/nydhusrelrudneshesfetdesretdunlernyrsebhulryllud\
|
|
|
|
/remlysfynwerrycsugnysnyllyndyndemluxfedsedbecmun\
|
|
|
|
/lyrtesmudnytbyrsenwegfyrmurtelreptegpecnelnevfes'
|
|
|
|
|%
|
2015-06-18 00:54:02 +03:00
|
|
|
++ ins ~/ %ins :: parse prefix
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@tas
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ b=0
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- (unit @)
|
2015-06-18 00:54:02 +03:00
|
|
|
?:(=(256 b) ~ ?:(=(a (tos b)) [~ b] $(b +(b))))
|
|
|
|
++ ind ~/ %ind :: parse suffix
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@tas
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ b=0
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- (unit @)
|
2015-06-18 00:54:02 +03:00
|
|
|
?:(=(256 b) ~ ?:(=(a (tod b)) [~ b] $(b +(b))))
|
|
|
|
++ tos ~/ %tos :: fetch prefix
|
2015-12-04 01:58:42 +03:00
|
|
|
|=(a+@ ?>((lth a 256) (cut 3 [(mul 3 a) 3] sis)))
|
2015-06-18 00:54:02 +03:00
|
|
|
++ tod ~/ %tod :: fetch suffix
|
2015-12-04 01:58:42 +03:00
|
|
|
|=(a+@ ?>((lth a 256) (cut 3 [(mul 3 a) 3] dex)))
|
2013-09-29 00:21:18 +04:00
|
|
|
--
|
2015-02-25 05:08:20 +03:00
|
|
|
::
|
|
|
|
++ fa :: base58check
|
|
|
|
=+ key='123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
|
2015-12-04 01:58:42 +03:00
|
|
|
=+ ^- yek+@ux ~+
|
2015-02-25 05:08:20 +03:00
|
|
|
=- yek:(roll (trip key) -)
|
2015-12-04 01:58:42 +03:00
|
|
|
|: [a=*char b=*@ yek=`@ux`(fil 3 256 0xff)]
|
2015-02-25 05:08:20 +03:00
|
|
|
[+(b) (mix yek (lsh 3 `@u`a (~(inv fe 3) b)))]
|
|
|
|
|%
|
2015-12-04 18:16:34 +03:00
|
|
|
++ cha |=(a+char `(unit @uF)`=+(b=(cut 3 [`@`a 1] yek) ?:(=(b 0xff) ~ `b)))
|
2015-02-25 05:08:20 +03:00
|
|
|
++ tok
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@ux ^- @ux
|
2015-02-25 05:08:20 +03:00
|
|
|
=+ b=(pad a)
|
|
|
|
=- (~(net fe 5) (end 3 4 (shay 32 -)))
|
|
|
|
(shay (add b (met 3 a)) (lsh 3 b (swap 3 a)))
|
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ pad |=(a+@ =+(b=(met 3 a) ?:((gte b 21) 0 (sub 21 b))))
|
|
|
|
++ enc |=(a+@ux `@ux`(mix (lsh 3 4 a) (tok a)))
|
2015-06-12 20:56:30 +03:00
|
|
|
++ den
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@ux ^- (unit @ux)
|
2015-02-25 05:08:20 +03:00
|
|
|
=+ b=(rsh 3 4 a)
|
|
|
|
?. =((tok b) (end 3 4 a))
|
|
|
|
~
|
|
|
|
`b
|
|
|
|
--
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2cF, signed and modular ints ::
|
|
|
|
::
|
2015-10-27 01:26:49 +03:00
|
|
|
++ si !: :: signed integer
|
2013-09-29 00:21:18 +04:00
|
|
|
|%
|
2015-12-04 01:58:42 +03:00
|
|
|
++ abs |=(a+@s (add (end 0 1 a) (rsh 0 1 a))) :: absolute value
|
|
|
|
++ dif |= {a+@s b+@s} :: subtraction
|
2014-04-04 14:00:26 +04:00
|
|
|
(sum a (new !(syn b) (abs b)))
|
2015-12-04 01:58:42 +03:00
|
|
|
++ dul |= {a+@s b+@} :: modulus
|
2014-04-04 14:00:26 +04:00
|
|
|
=+(c=(old a) ?:(-.c (mod +.c b) (sub b +.c)))
|
2015-12-04 01:58:42 +03:00
|
|
|
++ fra |= {a+@s b+@s} :: divide
|
2013-09-29 00:21:18 +04:00
|
|
|
(new =(0 (mix (syn a) (syn b))) (div (abs a) (abs b)))
|
2015-12-04 01:58:42 +03:00
|
|
|
++ new |= {a+? b+@} :: [sign value] to @s
|
2014-04-04 14:00:26 +04:00
|
|
|
`@s`?:(a (mul 2 b) ?:(=(0 b) 0 +((mul 2 (dec b)))))
|
2015-12-04 01:58:42 +03:00
|
|
|
++ old |=(a+@s [(syn a) (abs a)]) :: [sign value]
|
|
|
|
++ pro |= {a+@s b+@s} :: multiplication
|
2013-09-29 00:21:18 +04:00
|
|
|
(new =(0 (mix (syn a) (syn b))) (mul (abs a) (abs b)))
|
2015-12-04 01:58:42 +03:00
|
|
|
++ rem |=({a+@s b+@s} (dif a (pro b (fra a b)))) :: remainder
|
|
|
|
++ sum |= {a+@s b+@s} :: addition
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %si-sum
|
|
|
|
=+ [c=(old a) d=(old b)]
|
|
|
|
?: -.c
|
|
|
|
?: -.d
|
|
|
|
(new & (add +.c +.d))
|
|
|
|
?: (gte +.c +.d)
|
|
|
|
(new & (sub +.c +.d))
|
|
|
|
(new | (sub +.d +.c))
|
|
|
|
?: -.d
|
|
|
|
?: (gte +.c +.d)
|
|
|
|
(new | (sub +.c +.d))
|
|
|
|
(new & (sub +.d +.c))
|
|
|
|
(new | (add +.c +.d))
|
2015-12-04 01:58:42 +03:00
|
|
|
++ sun |=(a+@u (mul 2 a)) :: @u to @s
|
|
|
|
++ syn |=(a+@s =(0 (end 0 1 a))) :: sign test
|
|
|
|
++ cmp |= {a+@s b+@s} :: compare
|
2014-09-02 23:23:39 +04:00
|
|
|
^- @s
|
|
|
|
?: =(a b)
|
|
|
|
--0
|
|
|
|
?: (syn a)
|
|
|
|
?: (syn b)
|
|
|
|
?: (gth a b)
|
|
|
|
--1
|
|
|
|
-1
|
|
|
|
--1
|
|
|
|
?: (syn b)
|
|
|
|
-1
|
|
|
|
?: (gth a b)
|
|
|
|
-1
|
|
|
|
--1
|
2013-09-29 00:21:18 +04:00
|
|
|
--
|
|
|
|
++ fe :: modulo bloq
|
2015-12-04 01:58:42 +03:00
|
|
|
|_ a+bloq
|
|
|
|
++ dif |=({b+@ c+@} (sit (sub (add out (sit b)) (sit c)))) :: difference
|
|
|
|
++ inv |=(b+@ (sub (dec out) (sit b))) :: inverse
|
|
|
|
++ net |= b+@ ^- @ :: flip byte endianness
|
2013-09-29 00:21:18 +04:00
|
|
|
=> .(b (sit b))
|
|
|
|
?: (lte a 3)
|
|
|
|
b
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ c=(dec a)
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ con
|
|
|
|
(lsh c 1 $(a c, b (cut c [0 1] b)))
|
|
|
|
$(a c, b (cut c [1 1] b))
|
2014-10-04 05:22:37 +04:00
|
|
|
++ out (bex (bex a)) :: mod value
|
2015-12-04 01:58:42 +03:00
|
|
|
++ rol |= {b+bloq c+@ d+@} ^- @ :: roll left
|
2014-01-25 02:08:37 +04:00
|
|
|
=+ e=(sit d)
|
|
|
|
=+ f=(bex (sub a b))
|
|
|
|
=+ g=(mod c f)
|
|
|
|
(sit (con (lsh b g e) (rsh b (sub f g) e)))
|
2015-12-04 01:58:42 +03:00
|
|
|
++ ror |= {b+bloq c+@ d+@} ^- @ :: roll right
|
2014-01-25 02:08:37 +04:00
|
|
|
=+ e=(sit d)
|
|
|
|
=+ f=(bex (sub a b))
|
|
|
|
=+ g=(mod c f)
|
|
|
|
(sit (con (rsh b g e) (lsh b (sub f g) e)))
|
2015-12-04 01:58:42 +03:00
|
|
|
++ sum |=({b+@ c+@} (sit (add b c))) :: wrapping add
|
|
|
|
++ sit |=(b+@ (end a 1 b)) :: enforce modulo
|
2013-09-29 00:21:18 +04:00
|
|
|
--
|
2015-05-29 11:36:23 +03:00
|
|
|
::
|
|
|
|
++ stat :: positive counter
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+_+(* *)
|
|
|
|
|= (trel ? a (map a @ud))
|
2015-05-29 11:36:23 +03:00
|
|
|
^+ r
|
|
|
|
=+ (~(get by r) q)
|
2015-06-12 20:56:30 +03:00
|
|
|
?: p
|
2015-05-29 11:36:23 +03:00
|
|
|
(~(put by r) q ?~(- 1 +(u.-)))
|
2015-06-12 20:56:30 +03:00
|
|
|
?> ?=(^ -)
|
2015-05-29 11:36:23 +03:00
|
|
|
?:(=(0 u.-) (~(del by r) q) (~(put by r) q (dec u.-)))
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2cG, floating point ::
|
|
|
|
::
|
2015-07-12 20:26:23 +03:00
|
|
|
++ fn :: float, infinity, or NaN
|
|
|
|
:: s=sign, e=exponent, a=arithmetic form
|
|
|
|
:: (-1)^s * a * 2^e
|
2015-12-04 01:58:42 +03:00
|
|
|
_% {$f s+? e+@s a+@u}
|
|
|
|
{$i s+?}
|
|
|
|
{$n $~}
|
2015-07-12 20:26:23 +03:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ dn :: decimal float, infinity, or NaN
|
|
|
|
:: (-1)^s * a * 10^e
|
2015-12-04 01:58:42 +03:00
|
|
|
_% {$d s=? e=@s a=@u}
|
|
|
|
{$i s=?}
|
|
|
|
{$n $~}
|
2015-07-12 20:26:23 +03:00
|
|
|
==
|
|
|
|
::
|
2015-12-04 02:53:57 +03:00
|
|
|
++ rn :: parsed decimal float
|
|
|
|
::
|
|
|
|
_% {$d a+? b+{c+@ {d+@ e+@} f+? i+@}}
|
|
|
|
{$i a+?}
|
|
|
|
{$n $~}
|
|
|
|
==
|
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ fl :: arb. precision fp
|
2015-12-04 01:58:42 +03:00
|
|
|
=+ ^- {{p+@u v+@s w+@u} r+_?($n $u $d $z $a) d+_?($d $f $i)}
|
2015-07-12 20:26:23 +03:00
|
|
|
[[113 -16.494 32.765] %n %d]
|
|
|
|
:: p=precision: number of bits in arithmetic form; must be at least 2
|
|
|
|
:: v=min exponent: minimum value of e
|
|
|
|
:: w=width: max - min value of e, 0 is fixed point
|
|
|
|
:: r=rounding mode: nearest (ties to even), up, down, to zero, away from zero
|
|
|
|
:: d=behavior: return denormals, flush denormals to zero,
|
|
|
|
:: infinite exponent range
|
2015-07-30 01:10:30 +03:00
|
|
|
=>
|
2015-07-31 05:01:20 +03:00
|
|
|
~% %cofl +> ~
|
2015-08-06 21:21:47 +03:00
|
|
|
:: internal functions; mostly operating on [e=@s a=@u], in other words
|
|
|
|
:: positive numbers. many of these have undefined behavior if a=0.
|
|
|
|
|%
|
2015-07-12 20:26:23 +03:00
|
|
|
++ rou
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u}} ^- fn (rau a &)
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
|
|
|
++ rau
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u} t+?} ^- fn
|
2015-07-12 20:26:23 +03:00
|
|
|
?- r
|
2015-12-08 04:23:27 +03:00
|
|
|
$z (lug %fl a t) $d (lug %fl a t)
|
|
|
|
$a (lug %ce a t) $u (lug %ce a t)
|
|
|
|
$n (lug %ne a t)
|
2015-07-12 20:26:23 +03:00
|
|
|
==
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ add :: add; exact if e
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u} b+{e+@s a+@u} e+?} ^- fn
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ q=(dif:si e.a e.b)
|
2015-08-08 01:57:21 +03:00
|
|
|
|- ?. (syn:si q) $(b a, a b, q +(q)) :: a has larger exp
|
2015-07-12 20:26:23 +03:00
|
|
|
?: e
|
2015-07-30 01:10:30 +03:00
|
|
|
[%f & e.b (^add (lsh 0 (abs:si q) a.a) a.b)]
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ [ma=(met 0 a.a) mb=(met 0 a.b)]
|
2015-08-08 01:57:21 +03:00
|
|
|
=+ ^= w %+ dif:si e.a %- sun:si :: expanded exp of a
|
2015-07-30 01:10:30 +03:00
|
|
|
?: (gth prc ma) (^sub prc ma) 0
|
2015-08-08 01:57:21 +03:00
|
|
|
=+ ^= x %+ sum:si e.b (sun:si mb) :: highest exp for b
|
|
|
|
?: =((cmp:si w x) --1) :: don't need to add
|
2015-07-12 20:26:23 +03:00
|
|
|
?- r
|
2015-12-04 01:58:42 +03:00
|
|
|
$z (lug %fl a &) $d (lug %fl a &)
|
|
|
|
$a (lug %lg a &) $u (lug %lg a &)
|
|
|
|
$n (lug %na a &)
|
2015-07-12 20:26:23 +03:00
|
|
|
==
|
2015-07-30 01:10:30 +03:00
|
|
|
(rou [e.b (^add (lsh 0 (abs:si q) a.a) a.b)])
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ sub :: subtract; exact if e
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u} b+{e+@s a+@u} e+?} ^- fn
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ q=(dif:si e.a e.b)
|
|
|
|
|- ?. (syn:si q)
|
|
|
|
(fli $(b a, a b, q +(q), r swr))
|
|
|
|
=+ [ma=(met 0 a.a) mb=(met 0 a.b)]
|
|
|
|
=+ ^= w %+ dif:si e.a %- sun:si
|
2015-07-30 01:10:30 +03:00
|
|
|
?: (gth prc ma) (^sub prc ma) 0
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ ^= x %+ sum:si e.b (sun:si mb)
|
|
|
|
?: &(!e =((cmp:si w x) --1))
|
|
|
|
?- r
|
2015-12-04 01:58:42 +03:00
|
|
|
$z (lug %sm a &) $d (lug %sm a &)
|
|
|
|
$a (lug %ce a &) $u (lug %ce a &)
|
|
|
|
$n (lug %nt a &)
|
2015-07-12 20:26:23 +03:00
|
|
|
==
|
|
|
|
=+ j=(lsh 0 (abs:si q) a.a)
|
2015-07-30 01:10:30 +03:00
|
|
|
|- ?. (gte j a.b)
|
2015-07-12 20:26:23 +03:00
|
|
|
(fli $(a.b j, j a.b, r swr))
|
2015-07-30 01:10:30 +03:00
|
|
|
=+ i=(^sub j a.b)
|
2015-07-12 20:26:23 +03:00
|
|
|
?~ i [%f & zer]
|
|
|
|
?: e [%f & e.b i] (rou [e.b i])
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ mul :: multiply
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u} b+{e+@s a+@u}} ^- fn
|
2015-07-30 01:10:30 +03:00
|
|
|
(rou (sum:si e.a e.b) (^mul a.a a.b))
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ div :: divide
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u} b+{e+@s a+@u}} ^- fn
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ [ma=(met 0 a.a) mb=(met 0 a.b)]
|
2015-07-30 01:10:30 +03:00
|
|
|
=+ v=(dif:si (sun:si ma) (sun:si +((^add mb prc))))
|
2015-07-12 20:26:23 +03:00
|
|
|
=. a ?: (syn:si v) a
|
|
|
|
a(e (sum:si v e.a), a (lsh 0 (abs:si v) a.a))
|
2015-07-29 23:43:55 +03:00
|
|
|
=+ [j=(dif:si e.a e.b) q=(dvr a.a a.b)]
|
|
|
|
(rau [j p.q] =(q.q 0))
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ sqt :: square root
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u}} ^- fn
|
2015-07-12 20:26:23 +03:00
|
|
|
=. a
|
2015-07-30 01:10:30 +03:00
|
|
|
=+ [w=(met 0 a.a) x=(^mul +(prc) 2)]
|
|
|
|
=+ ?:((^lth w x) (^sub x w) 0)
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ ?: =((dis - 1) (dis (abs:si e.a) 1)) -
|
2015-08-03 19:59:40 +03:00
|
|
|
(^add - 1)
|
2015-07-12 20:26:23 +03:00
|
|
|
a(e (dif:si e.a (sun:si -)), a (lsh 0 - a.a))
|
2015-08-06 21:21:47 +03:00
|
|
|
=+ [y=(^sqt a.a) z=(fra:si e.a --2)]
|
2015-07-29 23:43:55 +03:00
|
|
|
(rau [z p.y] =(q.y 0))
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ lth :: less-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u} b+{e+@s a+@u}} ^- ?
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(e.a e.b) (^lth a.a a.b)
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ c=(cmp:si (ibl a) (ibl b))
|
|
|
|
?: =(c -1) & ?: =(c --1) |
|
|
|
|
?: =((cmp:si e.a e.b) -1)
|
2015-07-30 01:10:30 +03:00
|
|
|
(^lth (rsh 0 (abs:si (dif:si e.a e.b)) a.a) a.b)
|
|
|
|
(^lth (lsh 0 (abs:si (dif:si e.a e.b)) a.a) a.b)
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ lte :: less-equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u} b+{e+@s a+@u}} ^- ?
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(e.a e.b) (^lte a.a a.b)
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ c=(cmp:si (ibl a) (ibl b))
|
|
|
|
?: =(c -1) & ?: =(c --1) |
|
|
|
|
?: =((cmp:si e.a e.b) -1)
|
2015-07-30 01:10:30 +03:00
|
|
|
(^lte a.a (lsh 0 (abs:si (dif:si e.a e.b)) a.b))
|
|
|
|
(^lte (lsh 0 (abs:si (dif:si e.a e.b)) a.a) a.b)
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ equ :: equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u} b+{e+@s a+@u}} ^- ?
|
2015-07-12 20:26:23 +03:00
|
|
|
?. =((ibl a) (ibl b)) |
|
|
|
|
?: =((cmp:si e.a e.b) -1)
|
|
|
|
=((lsh 0 (abs:si (dif:si e.a e.b)) a.b) a.a)
|
|
|
|
=((lsh 0 (abs:si (dif:si e.a e.b)) a.a) a.b)
|
|
|
|
::
|
|
|
|
:: integer binary logarithm: 2^ibl(a) <= |a| < 2^(ibl(a)+1)
|
|
|
|
++ ibl
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u}} ^- @s
|
2015-07-12 20:26:23 +03:00
|
|
|
(sum:si (sun:si (dec (met 0 a.a))) e.a)
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
:: change to a representation where a.a is odd
|
|
|
|
:: every fn has a unique representation of this kind
|
2015-07-12 20:26:23 +03:00
|
|
|
++ uni
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u}}
|
2015-07-12 20:26:23 +03:00
|
|
|
|- ?: =((end 0 1 a.a) 1) a
|
|
|
|
$(a.a (rsh 0 1 a.a), e.a (sum:si e.a --1))
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
:: expands to either full precision or to denormalized
|
2015-07-12 20:26:23 +03:00
|
|
|
++ xpd
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u}}
|
2015-08-02 00:04:25 +03:00
|
|
|
=+ ma=(met 0 a.a)
|
2015-08-08 02:27:25 +03:00
|
|
|
?: (gte ma prc) a
|
2015-08-02 00:04:25 +03:00
|
|
|
=+ ?: =(den %i) (^sub prc ma)
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ ^= q
|
|
|
|
=+ w=(dif:si e.a emn)
|
|
|
|
?: (syn:si w) (abs:si w) 0
|
2015-08-02 00:04:25 +03:00
|
|
|
(min q (^sub prc ma))
|
2015-07-12 20:26:23 +03:00
|
|
|
a(e (dif:si e.a (sun:si -)), a (lsh 0 - a.a))
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
:: central rounding mechanism
|
|
|
|
:: can perform: floor, ceiling, smaller, larger,
|
|
|
|
:: nearest (round ties to: even, away from 0, toward 0)
|
2015-08-08 01:57:21 +03:00
|
|
|
:: s is sticky bit: represents a value less than ulp(a) = 2^(e.a)
|
2015-08-04 06:00:09 +03:00
|
|
|
++ lug
|
|
|
|
~/ %lug
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {t+_?($fl $ce $sm $lg $ne $na $nt) a+{e+@s a+@u} s+?} ^- fn
|
2015-08-06 21:21:47 +03:00
|
|
|
?< =(a.a 0)
|
2015-08-03 19:59:40 +03:00
|
|
|
=-
|
2015-08-08 01:57:21 +03:00
|
|
|
?. =(den %f) - :: flush denormals
|
2015-12-04 01:58:42 +03:00
|
|
|
?. ?=({$f *} -) -
|
2015-07-12 20:26:23 +03:00
|
|
|
?: =((met 0 ->+>) prc) - [%f & zer]
|
|
|
|
::
|
|
|
|
=+ m=(met 0 a.a)
|
2015-08-08 01:57:21 +03:00
|
|
|
?> |(s (gth m prc)) :: require precision
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ ^= q
|
|
|
|
=+ ^= f :: reduce precision
|
2015-07-30 01:10:30 +03:00
|
|
|
?: (gth m prc) (^sub m prc) 0
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ ^= g %- abs:si :: enforce min. exp
|
|
|
|
?: =(den %i) --0
|
|
|
|
?: =((cmp:si e.a emn) -1) (dif:si emn e.a) --0
|
|
|
|
(max f g)
|
|
|
|
=^ b a :- (end 0 q a.a)
|
|
|
|
a(e (sum:si e.a (sun:si q)), a (rsh 0 q a.a))
|
|
|
|
::
|
|
|
|
?~ a.a
|
|
|
|
?< =(den %i)
|
|
|
|
?- t
|
2015-12-04 01:58:42 +03:00
|
|
|
$fl [%f & zer]
|
|
|
|
$sm [%f & zer]
|
|
|
|
$ce [%f & spd]
|
|
|
|
$lg [%f & spd]
|
|
|
|
$ne ?: s [%f & ?:((^lte b (bex (dec q))) zer spd)]
|
2015-07-30 01:10:30 +03:00
|
|
|
[%f & ?:((^lth b (bex (dec q))) zer spd)]
|
2015-12-04 01:58:42 +03:00
|
|
|
$nt ?: s [%f & ?:((^lte b (bex (dec q))) zer spd)]
|
2015-07-30 01:10:30 +03:00
|
|
|
[%f & ?:((^lth b (bex (dec q))) zer spd)]
|
2015-12-04 01:58:42 +03:00
|
|
|
$na [%f & ?:((^lth b (bex (dec q))) zer spd)]
|
2015-07-12 20:26:23 +03:00
|
|
|
==
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
=. a (xpd a)
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-08-02 00:04:25 +03:00
|
|
|
=. a
|
2015-07-12 20:26:23 +03:00
|
|
|
?- t
|
2015-12-04 01:58:42 +03:00
|
|
|
$fl a
|
|
|
|
$lg a(a +(a.a))
|
|
|
|
$sm ?. &(=(b 0) s) a
|
2015-07-12 20:26:23 +03:00
|
|
|
?: &(=(e.a emn) !=(den %i)) a(a (dec a.a))
|
2015-07-30 01:10:30 +03:00
|
|
|
=+ y=(dec (^mul a.a 2))
|
|
|
|
?. (^lte (met 0 y) prc) a(a (dec a.a))
|
2015-07-12 20:26:23 +03:00
|
|
|
[(dif:si e.a --1) y]
|
2015-12-04 01:58:42 +03:00
|
|
|
$ce ?: &(=(b 0) s) a a(a +(a.a))
|
|
|
|
$ne ?~ b a
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ y=(bex (dec q))
|
2015-08-08 01:57:21 +03:00
|
|
|
?: &(=(b y) s) :: round halfs to even
|
2015-07-12 20:26:23 +03:00
|
|
|
?~ (dis a.a 1) a a(a +(a.a))
|
2015-07-30 01:10:30 +03:00
|
|
|
?: (^lth b y) a a(a +(a.a))
|
2015-12-04 01:58:42 +03:00
|
|
|
$na ?~ b a
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ y=(bex (dec q))
|
2015-07-30 01:10:30 +03:00
|
|
|
?: (^lth b y) a a(a +(a.a))
|
2015-12-04 01:58:42 +03:00
|
|
|
$nt ?~ b a
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ y=(bex (dec q))
|
|
|
|
?: =(b y) ?: s a a(a +(a.a))
|
2015-07-30 01:10:30 +03:00
|
|
|
?: (^lth b y) a a(a +(a.a))
|
2015-07-12 20:26:23 +03:00
|
|
|
==
|
2015-08-02 00:04:25 +03:00
|
|
|
::
|
2015-08-03 19:59:40 +03:00
|
|
|
=. a ?. =((met 0 a.a) +(prc)) a
|
|
|
|
a(a (rsh 0 1 a.a), e (sum:si e.a --1))
|
2015-07-12 20:26:23 +03:00
|
|
|
?~ a.a [%f & zer]
|
|
|
|
::
|
|
|
|
?: =(den %i) [%f & a]
|
|
|
|
?: =((cmp:si emx e.a) -1) [%i &] [%f & a] :: enforce max. exp
|
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ drg :: dragon4;
|
|
|
|
~/ %drg :: convert to decimal
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u}} ^- {@s @u}
|
2015-08-06 21:21:47 +03:00
|
|
|
?< =(a.a 0)
|
2015-08-08 01:57:21 +03:00
|
|
|
=. a (xpd a)
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ r=(lsh 0 ?:((syn:si e.a) (abs:si e.a) 0) a.a)
|
|
|
|
=+ s=(lsh 0 ?.((syn:si e.a) (abs:si e.a) 0) 1)
|
|
|
|
=+ m=(lsh 0 ?:((syn:si e.a) (abs:si e.a) 0) 1)
|
2015-07-30 01:10:30 +03:00
|
|
|
=+ [k=--0 q=(^div (^add s 9) 10)]
|
|
|
|
|- ?: (^lth r q)
|
2015-07-12 20:26:23 +03:00
|
|
|
%= $
|
|
|
|
k (dif:si k --1)
|
2015-07-30 01:10:30 +03:00
|
|
|
r (^mul r 10)
|
|
|
|
m (^mul m 10)
|
2015-07-12 20:26:23 +03:00
|
|
|
==
|
2015-07-30 01:10:30 +03:00
|
|
|
|- ?: (gte (^add (^mul r 2) m) (^mul s 2))
|
|
|
|
$(s (^mul s 10), k (sum:si k --1))
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ [u=0 o=0]
|
2015-07-29 23:43:55 +03:00
|
|
|
|-
|
2015-07-30 01:10:30 +03:00
|
|
|
=+ v=(dvr (^mul r 10) s)
|
2015-07-29 23:43:55 +03:00
|
|
|
=> %= .
|
2015-07-12 20:26:23 +03:00
|
|
|
k (dif:si k --1)
|
2015-07-29 23:43:55 +03:00
|
|
|
u p.v
|
|
|
|
r q.v
|
2015-07-30 01:10:30 +03:00
|
|
|
m (^mul m 10)
|
2015-07-12 20:26:23 +03:00
|
|
|
==
|
2015-07-30 01:10:30 +03:00
|
|
|
=+ l=(^lth (^mul r 2) m)
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ ^= h
|
2015-07-30 01:10:30 +03:00
|
|
|
?| (^lth (^mul s 2) m)
|
|
|
|
(gth (^mul r 2) (^sub (^mul s 2) m))
|
2015-07-12 20:26:23 +03:00
|
|
|
==
|
|
|
|
?: &(!l !h)
|
2015-07-30 01:10:30 +03:00
|
|
|
$(o (^add (^mul o 10) u))
|
2015-07-31 05:01:20 +03:00
|
|
|
=+ q=&(h |(!l (gte (^mul r 2) s)))
|
2015-07-30 01:10:30 +03:00
|
|
|
=. o (^add (^mul o 10) ?:(q +(u) u))
|
2015-07-12 20:26:23 +03:00
|
|
|
[k o]
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ toj :: round to integer
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+{e+@s a+@u}} ^- fn
|
2015-08-03 20:33:57 +03:00
|
|
|
?. =((cmp:si e.a --0) -1) [%f & a]
|
|
|
|
=+ x=(abs:si e.a)
|
|
|
|
=+ y=(rsh 0 x a.a)
|
|
|
|
?: |(=(r %d) =(r %z)) [%f & --0 y]
|
|
|
|
=+ z=(end 0 x a.a)
|
|
|
|
?: |(=(r %u) =(r %a)) [%f & --0 ?~(z y +(y))]
|
|
|
|
=+ i=(bex (dec x))
|
|
|
|
?: &(=(z i) =((dis y 1) 0)) [%f & --0 y]
|
|
|
|
?: (^lth z i) [%f & --0 y] [%f & --0 +(y)]
|
|
|
|
::
|
2015-12-05 02:59:29 +03:00
|
|
|
++ ned :: require ?=({$f *} a)
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- {$f s+? e+@s a+@u}
|
|
|
|
?: ?=({$f *} a) a
|
2015-07-12 20:26:23 +03:00
|
|
|
~| %need-float !!
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ shf :: a * 2^b; no rounding
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+@s}
|
|
|
|
?: |(?=({$n *} a) ?=({$i *} a)) a
|
2015-07-12 20:26:23 +03:00
|
|
|
a(e (sum:si e.a b))
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ fli :: flip sign
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- fn
|
2015-12-08 04:23:27 +03:00
|
|
|
?-(-.a $f a(s !s.a), $i a(s !s.a), $n a)
|
2015-07-30 01:10:30 +03:00
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ swr ?+(r r $d %u, $u %d) :: flipped rounding
|
2015-08-08 01:57:21 +03:00
|
|
|
++ prc ?>((gth p 1) p) :: force >= 2 precision
|
|
|
|
++ den d :: denorm/flush/inf exp
|
2015-08-06 21:21:47 +03:00
|
|
|
++ emn v :: minimum exponent
|
|
|
|
++ emx (sum:si emn (sun:si w)) :: maximum exponent
|
|
|
|
++ spd [e=emn a=1] :: smallest denormal
|
|
|
|
++ spn [e=emn a=(bex (dec prc))] :: smallest normal
|
2015-07-29 06:56:02 +03:00
|
|
|
++ lfn [e=emx a=(fil 0 prc 1)] :: largest
|
2015-08-08 01:57:21 +03:00
|
|
|
++ lfe (sum:si emx (sun:si prc)) :: 2^lfe is > than all
|
2015-07-29 06:56:02 +03:00
|
|
|
++ zer [e=--0 a=0]
|
2014-06-27 17:35:16 +04:00
|
|
|
--
|
Add floating point parsing.
Floating point parses for doubles correctly and can be easily
implemented for the other types of floats (algorithm is general with
respect to the precision of the significand).
Some half-baked gates are included, like bey, which is unfortunate. I'm
not sure if an equivalent to bey exists somewhere. These won't be used
anywhere with actual math, though.
Warning: Don't try to print floats. It doesn't work and will crash or
something. Its not really implemented, because parsing is actually
fairly nontrivial mathwise. Parsing represents the problem
x.y -> r2^e, find (r, e) given (x, y)
whereas printing is the problem
r2^e -> x.y, find (x, y) given (r, e)
both of which are annoying to solve.
2014-05-30 18:29:38 +04:00
|
|
|
|%
|
2015-08-06 21:21:47 +03:00
|
|
|
++ rou :: round
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- fn
|
|
|
|
?. ?=({$f *} a) a
|
2015-07-30 01:10:30 +03:00
|
|
|
?~ a.a [%f s.a zer]
|
|
|
|
?: s.a (^rou +>.a)
|
|
|
|
=.(r swr (fli (^rou +>.a)))
|
2014-06-19 22:53:16 +04:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ syn :: get sign
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- ?
|
|
|
|
?-(-.a $f s.a, $i s.a, $n &)
|
2015-07-30 01:10:30 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ abs :: absolute value
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- fn
|
|
|
|
?: ?=({$f *} a) [%f & e.a a.a]
|
|
|
|
?: ?=({$i *} a) [%i &] [%n ~]
|
2015-07-30 01:10:30 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ add :: add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn} ^- fn
|
|
|
|
?: |(?=({$n *} a) ?=({$n *} b)) [%n ~]
|
|
|
|
?: |(?=({$i *} a) ?=({$i *} b))
|
|
|
|
?: &(?=({$i *} a) ?=({$i *} b))
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(a b) a [%n ~]
|
2015-12-04 01:58:42 +03:00
|
|
|
?: ?=({$i *} a) a b
|
2015-07-30 01:10:30 +03:00
|
|
|
?: |(=(a.a 0) =(a.b 0))
|
|
|
|
?. &(=(a.a 0) =(a.b 0)) %- rou ?~(a.a b a)
|
|
|
|
[%f ?:(=(r %d) &(s.a s.b) |(s.a s.b)) zer]
|
2015-12-04 01:58:42 +03:00
|
|
|
%- |= {a+fn}
|
|
|
|
?. ?=({$f *} a) a
|
2015-07-30 01:10:30 +03:00
|
|
|
?. =(a.a 0) a
|
|
|
|
[%f !=(r %d) zer]
|
|
|
|
?: =(s.a s.b)
|
|
|
|
?: s.a (^add +>.a +>.b |)
|
|
|
|
=.(r swr (fli (^add +>.a +>.b |)))
|
|
|
|
?: s.a (^sub +>.a +>.b |)
|
|
|
|
(^sub +>.b +>.a |)
|
|
|
|
::
|
|
|
|
++ ead :: exact add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn} ^- fn
|
|
|
|
?: |(?=({$n *} a) ?=({$n *} b)) [%n ~]
|
|
|
|
?: |(?=({$i *} a) ?=({$i *} b))
|
|
|
|
?: &(?=({$i *} a) ?=({$i *} b))
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(a b) a [%n ~]
|
2015-12-04 01:58:42 +03:00
|
|
|
?: ?=({$i *} a) a b
|
2015-07-30 01:10:30 +03:00
|
|
|
?: |(=(a.a 0) =(a.b 0))
|
|
|
|
?. &(=(a.a 0) =(a.b 0)) ?~(a.a b a)
|
|
|
|
[%f ?:(=(r %d) &(s.a s.b) |(s.a s.b)) zer]
|
2015-12-04 01:58:42 +03:00
|
|
|
%- |= {a+fn}
|
|
|
|
?. ?=({$f *} a) a
|
2015-08-06 21:21:47 +03:00
|
|
|
?. =(a.a 0) a
|
|
|
|
[%f !=(r %d) zer]
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(s.a s.b)
|
|
|
|
?: s.a (^add +>.a +>.b &)
|
|
|
|
(fli (^add +>.a +>.b &))
|
|
|
|
?: s.a (^sub +>.a +>.b &)
|
|
|
|
(^sub +>.b +>.a &)
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ sub :: subtract
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn} ^- fn (add a (fli b))
|
2015-07-30 01:10:30 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ mul :: multiply
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn} ^- fn
|
|
|
|
?: |(?=({$n *} a) ?=({$n *} b)) [%n ~]
|
|
|
|
?: ?=({$i *} a)
|
|
|
|
?: ?=({$i *} b)
|
|
|
|
[%i =(s.a s.b)]
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(a.b 0) [%n ~] [%i =(s.a s.b)]
|
2015-12-04 01:58:42 +03:00
|
|
|
?: ?=({$i *} b)
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(a.a 0) [%n ~] [%i =(s.a s.b)]
|
|
|
|
?: |(=(a.a 0) =(a.b 0)) [%f =(s.a s.b) zer]
|
|
|
|
?: =(s.a s.b) (^mul +>.a +>.b)
|
|
|
|
=.(r swr (fli (^mul +>.a +>.b)))
|
|
|
|
::
|
|
|
|
++ emu :: exact multiply
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn} ^- fn
|
|
|
|
?: |(?=({$n *} a) ?=({$n *} b)) [%n ~]
|
|
|
|
?: ?=({$i *} a)
|
|
|
|
?: ?=({$i *} b)
|
|
|
|
[%i =(s.a s.b)]
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(a.b 0) [%n ~] [%i =(s.a s.b)]
|
2015-12-04 01:58:42 +03:00
|
|
|
?: ?=({$i *} b)
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(a.a 0) [%n ~] [%i =(s.a s.b)]
|
|
|
|
?: |(=(a.a 0) =(a.b 0)) [%f =(s.a s.b) zer]
|
|
|
|
[%f =(s.a s.b) (sum:si e.a e.b) (^^mul a.a a.b)]
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ div :: divide
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn} ^- fn
|
|
|
|
?: |(?=({$n *} a) ?=({$n *} b)) [%n ~]
|
|
|
|
?: ?=({$i *} a)
|
|
|
|
?: ?=({$i *} b) [%n ~] [%i =(s.a s.b)]
|
|
|
|
?: ?=({$i *} b) [%f =(s.a s.b) zer]
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(a.a 0) ?: =(a.b 0) [%n ~] [%f =(s.a s.b) zer]
|
|
|
|
?: =(a.b 0) [%i =(s.a s.b)]
|
|
|
|
?: =(s.a s.b) (^div +>.a +>.b)
|
|
|
|
=.(r swr (fli (^div +>.a +>.b)))
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ fma :: fused multiply-add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn c+fn} ^- fn :: (a * b) + c
|
2015-07-30 01:10:30 +03:00
|
|
|
(add (emu a b) c)
|
|
|
|
::
|
|
|
|
++ sqt :: square root
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- fn
|
|
|
|
?: ?=({$n *} a) [%n ~]
|
|
|
|
?: ?=({$i *} a) ?:(s.a a [%n ~])
|
2015-07-30 01:10:30 +03:00
|
|
|
?~ a.a [%f s.a zer]
|
|
|
|
?: s.a (^sqt +>.a) [%n ~]
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ inv :: inverse
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- fn
|
2015-07-30 01:10:30 +03:00
|
|
|
(div [%f & --0 1] a)
|
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ sun :: uns integer to float
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@u} ^- fn
|
2015-07-30 01:10:30 +03:00
|
|
|
(rou [%f & --0 a])
|
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ san :: sgn integer to float
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@s} ^- fn
|
2015-07-30 01:10:30 +03:00
|
|
|
=+ b=(old:si a)
|
|
|
|
(rou [%f -.b --0 +.b])
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
:: comparisons return ~ in the event of a NaN
|
|
|
|
++ lth :: less-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn} ^- (unit ?)
|
|
|
|
?: |(?=({$n *} a) ?=({$n *} b)) ~ :- ~
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(a b) |
|
2015-12-04 01:58:42 +03:00
|
|
|
?: ?=({$i *} a) !s.a ?: ?=({$i *} b) s.b
|
2015-07-30 01:10:30 +03:00
|
|
|
?: |(=(a.a 0) =(a.b 0))
|
|
|
|
?: &(=(a.a 0) =(a.b 0)) |
|
|
|
|
?: =(a.a 0) s.b !s.a
|
|
|
|
?: !=(s.a s.b) s.b
|
|
|
|
?: s.a (^lth +>.a +>.b) (^lth +>.b +>.a)
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ lte :: less-equal
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn} ^- (unit ?)
|
|
|
|
?: |(?=({$n *} a) ?=({$n *} b)) ~ :- ~
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(a b) &
|
2015-12-04 01:58:42 +03:00
|
|
|
?: ?=({$i *} a) !s.a ?: ?=({$i *} b) s.b
|
2015-07-30 01:10:30 +03:00
|
|
|
?: |(=(a.a 0) =(a.b 0))
|
|
|
|
?: &(=(a.a 0) =(a.b 0)) &
|
|
|
|
?: =(a.a 0) s.b !s.a
|
|
|
|
?: !=(s.a s.b) s.b
|
|
|
|
?: s.a (^lte +>.a +>.b) (^lte +>.b +>.a)
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ equ :: equal
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn} ^- (unit ?)
|
|
|
|
?: |(?=({$n *} a) ?=({$n *} b)) ~ :- ~
|
2015-07-30 01:10:30 +03:00
|
|
|
?: =(a b) &
|
2015-12-04 01:58:42 +03:00
|
|
|
?: |(?=({$i *} a) ?=({$i *} b)) |
|
2015-07-30 01:10:30 +03:00
|
|
|
?: |(=(a.a 0) =(a.b 0))
|
|
|
|
?: &(=(a.a 0) =(a.b 0)) & |
|
|
|
|
?: |(=(e.a e.b) !=(s.a s.b)) |
|
|
|
|
(^equ +>.a +>.b)
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gte :: greater-equal
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn} ^- (unit ?) (lte b a)
|
2015-07-30 01:10:30 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gth :: greater-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn b+fn} ^- (unit ?) (lth b a)
|
2015-07-30 01:10:30 +03:00
|
|
|
::
|
2015-08-02 00:04:25 +03:00
|
|
|
++ drg :: float to decimal
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- dn
|
|
|
|
?: ?=({$n *} a) [%n ~]
|
|
|
|
?: ?=({$i *} a) [%i s.a]
|
2015-07-30 01:10:30 +03:00
|
|
|
?~ a.a [%d s.a --0 0]
|
|
|
|
[%d s.a (^drg +>.a)]
|
|
|
|
::
|
|
|
|
++ grd :: decimal to float
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+dn} ^- fn
|
|
|
|
?: ?=({$n *} a) [%n ~]
|
|
|
|
?: ?=({$i *} a) [%i s.a]
|
2015-08-04 06:00:09 +03:00
|
|
|
=> .(r %n)
|
2015-07-30 01:10:30 +03:00
|
|
|
=+ q=(abs:si e.a)
|
|
|
|
?: (syn:si e.a)
|
|
|
|
(mul [%f s.a --0 a.a] [%f & e.a (pow 5 q)])
|
|
|
|
(div [%f s.a --0 a.a] [%f & (sun:si q) (pow 5 q)])
|
2015-08-03 20:33:57 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ toi :: round to integer @s
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {a+fn} ^- (unit @s)
|
2015-08-06 21:21:47 +03:00
|
|
|
=+ b=(toj a)
|
2015-12-04 01:58:42 +03:00
|
|
|
?. ?=({$f *} b) ~ :- ~
|
2015-08-06 21:21:47 +03:00
|
|
|
=+ c=(^^mul (bex (abs:si e.b)) a.b)
|
|
|
|
(new:si s.b c)
|
|
|
|
::
|
|
|
|
++ toj :: round to integer fn
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- fn
|
|
|
|
?. ?=({$f *} a) a
|
2015-08-03 20:33:57 +03:00
|
|
|
?~ a.a [%f s.a zer]
|
2015-08-06 21:21:47 +03:00
|
|
|
?: s.a (^toj +>.a)
|
|
|
|
=.(r swr (fli (^toj +>.a)))
|
Add floating point parsing.
Floating point parses for doubles correctly and can be easily
implemented for the other types of floats (algorithm is general with
respect to the precision of the significand).
Some half-baked gates are included, like bey, which is unfortunate. I'm
not sure if an equivalent to bey exists somewhere. These won't be used
anywhere with actual math, though.
Warning: Don't try to print floats. It doesn't work and will crash or
something. Its not really implemented, because parsing is actually
fairly nontrivial mathwise. Parsing represents the problem
x.y -> r2^e, find (r, e) given (x, y)
whereas printing is the problem
r2^e -> x.y, find (x, y) given (r, e)
both of which are annoying to solve.
2014-05-30 18:29:38 +04:00
|
|
|
--
|
2014-07-19 04:51:22 +04:00
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ ff :: ieee 754 format fp
|
2015-12-04 01:58:42 +03:00
|
|
|
|_ {{w=@u p=@u b=@s} r=_?($n $u $d $z $a)}
|
2015-08-06 21:21:47 +03:00
|
|
|
:: this core has no use outside of the functionality
|
|
|
|
:: provided to ++rd, ++rs, ++rq, and ++rh
|
|
|
|
::
|
|
|
|
:: w=width: bits in exponent field
|
|
|
|
:: p=precision: bits in fraction field
|
|
|
|
:: w=bias: added to exponent when storing
|
|
|
|
:: r=rounding mode: same as in ++fl
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ sb (bex (^add w p)) :: sign bit
|
|
|
|
++ me (dif:si (dif:si --1 b) (sun:si p)) :: minimum exponent
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
|
|
|
++ pa
|
2015-08-01 06:30:13 +03:00
|
|
|
%*(. fl p +(p), v me, w (^sub (bex w) 3), d %d, r r)
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ sea :: @r to fn
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r} ^- fn
|
2015-08-06 21:21:47 +03:00
|
|
|
=+ [f=(cut 0 [0 p] a) e=(cut 0 [p w] a)]
|
|
|
|
=+ s=(sig a)
|
2015-07-12 20:26:23 +03:00
|
|
|
?: =(e 0)
|
2015-08-01 06:30:13 +03:00
|
|
|
?: =(f 0) [%f s --0 0] [%f s me f]
|
2015-07-12 20:26:23 +03:00
|
|
|
?: =(e (fil 0 w 1))
|
|
|
|
?: =(f 0) [%i s] [%n ~]
|
2015-08-01 06:30:13 +03:00
|
|
|
=+ q=:(sum:si (sun:si e) me -1)
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ r=(^add f (bex p))
|
|
|
|
[%f s q r]
|
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ bit |= {a+fn} (bif (rou:pa a)) :: fn to @r w/ rounding
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ bif :: fn to @r no rounding
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- @r
|
|
|
|
?: ?=({$i *} a)
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ q=(lsh 0 p (fil 0 w 1))
|
|
|
|
?: s.a q (^add q sb)
|
2015-12-04 01:58:42 +03:00
|
|
|
?: ?=({$n *} a) (lsh 0 (dec p) (fil 0 +(w) 1))
|
2015-07-12 20:26:23 +03:00
|
|
|
?~ a.a ?: s.a `@r`0 sb
|
|
|
|
=+ ma=(met 0 a.a)
|
|
|
|
?. =(ma +(p))
|
2015-08-01 06:30:13 +03:00
|
|
|
?> =(e.a me)
|
2015-07-12 20:26:23 +03:00
|
|
|
?> (^lth ma +(p))
|
|
|
|
?: s.a `@r`a.a (^add a.a sb)
|
2015-08-01 06:30:13 +03:00
|
|
|
=+ q=(sum:si (dif:si e.a me) --1)
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ r=(^add (lsh 0 p (abs:si q)) (end 0 p a.a))
|
|
|
|
?: s.a r (^add r sb)
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ sig :: get sign
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r} ^- ?
|
2015-07-12 20:26:23 +03:00
|
|
|
=(0 (cut 0 [(^add p w) 1] a))
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ exp :: get exponent
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r} ^- @s
|
2015-07-12 20:26:23 +03:00
|
|
|
(dif:si (sun:si (cut 0 [p w] a)) b)
|
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ add :: add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r b+@r}
|
2015-08-06 21:21:47 +03:00
|
|
|
(bif (add:pa (sea a) (sea b)))
|
2015-08-05 05:52:07 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ sub :: subtract
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r b+@r}
|
2015-08-06 21:21:47 +03:00
|
|
|
(bif (sub:pa (sea a) (sea b)))
|
|
|
|
::
|
|
|
|
++ mul :: multiply
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r b+@r}
|
2015-08-06 21:21:47 +03:00
|
|
|
(bif (mul:pa (sea a) (sea b)))
|
|
|
|
::
|
|
|
|
++ div :: divide
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r b+@r}
|
2015-08-06 21:21:47 +03:00
|
|
|
(bif (div:pa (sea a) (sea b)))
|
|
|
|
::
|
|
|
|
++ fma :: fused multiply-add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r b+@r c+@r}
|
2015-08-06 21:21:47 +03:00
|
|
|
(bif (fma:pa (sea a) (sea b) (sea c)))
|
|
|
|
::
|
|
|
|
++ sqt :: square root
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r}
|
2015-08-06 21:21:47 +03:00
|
|
|
(bif (sqt:pa (sea a)))
|
|
|
|
::
|
|
|
|
++ lth :: less-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r b+@r} (fall (lth:pa (sea a) (sea b)) |)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ lte :: less-equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r b+@r} (fall (lte:pa (sea a) (sea b)) |)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ equ :: equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r b+@r} (fall (equ:pa (sea a) (sea b)) |)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gte :: greater-equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r b+@r} (fall (gte:pa (sea a) (sea b)) |)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gth :: greater-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r b+@r} (fall (gth:pa (sea a) (sea b)) |)
|
2015-08-08 01:57:21 +03:00
|
|
|
++ sun :: uns integer to @r
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@u} (bit [%f & --0 a])
|
2015-08-06 21:21:47 +03:00
|
|
|
++ san :: signed integer to @r
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@s} (bit [%f (syn:si a) --0 (abs:si a)])
|
2015-08-06 21:21:47 +03:00
|
|
|
++ toi :: round to integer
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r} (toi:pa (sea a))
|
2015-08-06 21:21:47 +03:00
|
|
|
++ drg :: @r to decimal float
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@r} (drg:pa (sea a))
|
2015-08-06 21:21:47 +03:00
|
|
|
++ grd :: decimal float to @r
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+dn} (bif (grd:pa a))
|
2015-07-12 20:26:23 +03:00
|
|
|
--
|
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ rlyd |= a+@rd ^- dn (drg:rd a) :: prep @rd for print
|
|
|
|
++ rlys |= a+@rs ^- dn (drg:rs a) :: prep @rs for print
|
|
|
|
++ rlyh |= a+@rh ^- dn (drg:rh a) :: prep @rh for print
|
|
|
|
++ rlyq |= a+@rq ^- dn (drg:rq a) :: prep @rq for print
|
|
|
|
++ ryld |= a+dn ^- @rd (grd:rd a) :: finish parsing @rd
|
|
|
|
++ ryls |= a+dn ^- @rs (grd:rs a) :: finish parsing @rs
|
|
|
|
++ rylh |= a+dn ^- @rh (grd:rh a) :: finish parsing @rh
|
|
|
|
++ rylq |= a+dn ^- @rq (grd:rq a) :: finish parsing @rq
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ rd :: double precision fp
|
2015-08-04 06:00:09 +03:00
|
|
|
~% %rd +> ~
|
2015-12-04 01:58:42 +03:00
|
|
|
|_ r+_?($n $u $d $z)
|
2015-08-06 21:21:47 +03:00
|
|
|
:: round to nearest, round up, round down, round to zero
|
|
|
|
::
|
2015-07-12 20:37:45 +03:00
|
|
|
++ ma
|
2015-08-04 06:00:09 +03:00
|
|
|
%*(. ff w 11, p 52, b --1.023, r r)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ sea :: @rd to fn
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd} (sea:ma a)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ bit :: fn to @rd
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- @rd (bit:ma a)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ add ~/ %add :: add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd b+@rd} ^- @rd ~| %rd-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(add:ma a b)
|
|
|
|
::
|
|
|
|
++ sub ~/ %sub :: subtract
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd b+@rd} ^- @rd ~| %rd-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(sub:ma a b)
|
|
|
|
::
|
|
|
|
++ mul ~/ %mul :: multiply
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd b+@rd} ^- @rd ~| %rd-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(mul:ma a b)
|
|
|
|
::
|
|
|
|
++ div ~/ %div :: divide
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd b+@rd} ^- @rd ~| %rd-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(div:ma a b)
|
|
|
|
::
|
|
|
|
++ fma ~/ %fma :: fused multiply-add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd b+@rd c+@rd} ^- @rd ~| %rd-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(fma:ma a b c)
|
|
|
|
::
|
|
|
|
++ sqt ~/ %sqt :: square root
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd} ^- @rd ~| %rd-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(sqt:ma a)
|
|
|
|
::
|
|
|
|
++ lth ~/ %lth :: less-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd b+@rd} ~| %rd-fail (lth:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ lte ~/ %lte :: less-equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd b+@rd} ~| %rd-fail (lte:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ equ ~/ %equ :: equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd b+@rd} ~| %rd-fail (equ:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gte ~/ %gte :: greater-equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd b+@rd} ~| %rd-fail (gte:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gth ~/ %gth :: greater-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rd b+@rd} ~| %rd-fail (gth:ma a b)
|
|
|
|
::
|
|
|
|
++ sun |= {a+@u} ^- @rd (sun:ma a) :: uns integer to @rd
|
|
|
|
++ san |= {a+@s} ^- @rd (san:ma a) :: sgn integer to @rd
|
|
|
|
++ sig |= {a+@rd} ^- ? (sig:ma a) :: get sign
|
|
|
|
++ exp |= {a+@rd} ^- @s (exp:ma a) :: get exponent
|
2015-12-04 18:16:34 +03:00
|
|
|
++ toi |= {a+@rd} ^- (unit @s) (toi:ma a) :: round to integer
|
2015-12-04 01:58:42 +03:00
|
|
|
++ drg |= {a+@rd} ^- dn (drg:ma a) :: @rd to decimal float
|
|
|
|
++ grd |= {a+dn} ^- @rd (grd:ma a) :: decimal float to @rd
|
2015-07-12 20:26:23 +03:00
|
|
|
--
|
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ rs :: single precision fp
|
2015-08-04 06:00:09 +03:00
|
|
|
~% %rs +> ~
|
2015-12-04 01:58:42 +03:00
|
|
|
|_ r+_?($n $u $d $z)
|
2015-08-06 21:21:47 +03:00
|
|
|
:: round to nearest, round up, round down, round to zero
|
|
|
|
::
|
2015-07-12 20:37:45 +03:00
|
|
|
++ ma
|
2015-08-08 01:57:21 +03:00
|
|
|
%*(. ff w 8, p 23, b --127, r r)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ sea :: @rs to fn
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs} (sea:ma a)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ bit :: fn to @rs
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- @rs (bit:ma a)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ add ~/ %add :: add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs b+@rs} ^- @rs ~| %rs-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(add:ma a b)
|
|
|
|
::
|
|
|
|
++ sub ~/ %sub :: subtract
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs b+@rs} ^- @rs ~| %rs-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(sub:ma a b)
|
|
|
|
::
|
|
|
|
++ mul ~/ %mul :: multiply
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs b+@rs} ^- @rs ~| %rs-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(mul:ma a b)
|
|
|
|
::
|
|
|
|
++ div ~/ %div :: divide
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs b+@rs} ^- @rs ~| %rs-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(div:ma a b)
|
|
|
|
::
|
|
|
|
++ fma ~/ %fma :: fused multiply-add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs b+@rs c+@rs} ^- @rs ~| %rs-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(fma:ma a b c)
|
|
|
|
::
|
|
|
|
++ sqt ~/ %sqt :: square root
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs} ^- @rs ~| %rs-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(sqt:ma a)
|
|
|
|
::
|
|
|
|
++ lth ~/ %lth :: less-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs b+@rs} ~| %rs-fail (lth:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ lte ~/ %lte :: less-equals
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {a+@rs b+@rs} ~| %rs-fail (lte:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ equ ~/ %equ :: equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs b+@rs} ~| %rs-fail (equ:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gte ~/ %gte :: greater-equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs b+@rs} ~| %rs-fail (gte:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gth ~/ %gth :: greater-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs b+@rs} ~| %rs-fail (gth:ma a b)
|
|
|
|
::
|
|
|
|
++ sun |= {a+@u} ^- @rs (sun:ma a) :: uns integer to @rs
|
|
|
|
++ san |= {a+@s} ^- @rs (san:ma a) :: sgn integer to @rs
|
|
|
|
++ sig |= {a+@rs} ^- ? (sig:ma a) :: get sign
|
|
|
|
++ exp |= {a+@rs} ^- @s (exp:ma a) :: get exponent
|
2015-12-04 18:16:34 +03:00
|
|
|
++ toi |= {a+@rs} ^- (unit @s) (toi:ma a) :: round to integer
|
2015-12-04 01:58:42 +03:00
|
|
|
++ drg |= {a+@rs} ^- dn (drg:ma a) :: @rs to decimal float
|
|
|
|
++ grd |= {a+dn} ^- @rs (grd:ma a) :: decimal float to @rs
|
2015-07-12 20:26:23 +03:00
|
|
|
--
|
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ rq :: quad precision fp
|
2015-08-04 06:00:09 +03:00
|
|
|
~% %rq +> ~
|
2015-12-04 01:58:42 +03:00
|
|
|
|_ r+_?($n $u $d $z)
|
2015-08-06 21:21:47 +03:00
|
|
|
:: round to nearest, round up, round down, round to zero
|
|
|
|
::
|
2015-07-12 20:37:45 +03:00
|
|
|
++ ma
|
2015-08-08 01:57:21 +03:00
|
|
|
%*(. ff w 15, p 112, b --16.383, r r)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ sea :: @rq to fn
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq} (sea:ma a)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ bit :: fn to @rq
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- @rq (bit:ma a)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ add ~/ %add :: add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq b+@rq} ^- @rq ~| %rq-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(add:ma a b)
|
|
|
|
::
|
|
|
|
++ sub ~/ %sub :: subtract
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq b+@rq} ^- @rq ~| %rq-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(sub:ma a b)
|
|
|
|
::
|
|
|
|
++ mul ~/ %mul :: multiply
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq b+@rq} ^- @rq ~| %rq-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(mul:ma a b)
|
|
|
|
::
|
|
|
|
++ div ~/ %div :: divide
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq b+@rq} ^- @rq ~| %rq-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(div:ma a b)
|
|
|
|
::
|
|
|
|
++ fma ~/ %fma :: fused multiply-add
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq b+@rq c+@rq} ^- @rq ~| %rq-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(fma:ma a b c)
|
|
|
|
::
|
|
|
|
++ sqt ~/ %sqt :: square root
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq} ^- @rq ~| %rq-fail
|
2015-08-06 21:21:47 +03:00
|
|
|
(sqt:ma a)
|
|
|
|
::
|
|
|
|
++ lth ~/ %lth :: less-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq b+@rq} ~| %rq-fail (lth:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ lte ~/ %lte :: less-equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq b+@rq} ~| %rq-fail (lte:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ equ ~/ %equ :: equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq b+@rq} ~| %rq-fail (equ:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gte ~/ %gte :: greater-equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq b+@rq} ~| %rq-fail (gte:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gth ~/ %gth :: greater-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rq b+@rq} ~| %rq-fail (gth:ma a b)
|
|
|
|
::
|
|
|
|
++ sun |= {a+@u} ^- @rq (sun:ma a) :: uns integer to @rq
|
|
|
|
++ san |= {a+@s} ^- @rq (san:ma a) :: sgn integer to @rq
|
|
|
|
++ sig |= {a+@rq} ^- ? (sig:ma a) :: get sign
|
|
|
|
++ exp |= {a+@rq} ^- @s (exp:ma a) :: get exponent
|
2015-12-04 18:16:34 +03:00
|
|
|
++ toi |= {a+@rq} ^- (unit @s) (toi:ma a) :: round to integer
|
2015-12-04 01:58:42 +03:00
|
|
|
++ drg |= {a+@rq} ^- dn (drg:ma a) :: @rq to decimal float
|
|
|
|
++ grd |= {a+dn} ^- @rq (grd:ma a) :: decimal float to @rq
|
2015-07-29 06:56:02 +03:00
|
|
|
--
|
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ rh :: half precision fp
|
2015-12-04 01:58:42 +03:00
|
|
|
|_ r+_?($n $u $d $z)
|
2015-08-06 21:21:47 +03:00
|
|
|
:: round to nearest, round up, round down, round to zero
|
|
|
|
::
|
2015-07-29 06:56:02 +03:00
|
|
|
++ ma
|
2015-08-04 06:00:09 +03:00
|
|
|
%*(. ff w 5, p 10, b --15, r r)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ sea :: @rh to fn
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rh} (sea:ma a)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ bit :: fn to @rh
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+fn} ^- @rh (bit:ma a)
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ tos :: @rh to @rs
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rh} (bit:rs (sea a))
|
2015-08-06 21:21:47 +03:00
|
|
|
::
|
|
|
|
++ fos :: @rs to @rh
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rs} (bit (sea:rs a))
|
2015-07-29 06:56:02 +03:00
|
|
|
::
|
2015-08-06 21:21:47 +03:00
|
|
|
++ lth ~/ %lth :: less-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rh b+@rh} ~| %rh-fail (lth:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ lte ~/ %lte :: less-equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rh b+@rh} ~| %rh-fail (lte:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ equ ~/ %equ :: equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rh b+@rh} ~| %rh-fail (equ:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gte ~/ %gte :: greater-equals
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rh b+@rh} ~| %rh-fail (gte:ma a b)
|
2015-08-06 21:21:47 +03:00
|
|
|
++ gth ~/ %gth :: greater-than
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@rh b+@rh} ~| %rh-fail (gth:ma a b)
|
|
|
|
::
|
|
|
|
++ sun |= {a+@u} ^- @rh (sun:ma a) :: uns integer to @rh
|
|
|
|
++ san |= {a+@s} ^- @rh (san:ma a) :: sgn integer to @rh
|
|
|
|
++ sig |= {a+@rh} ^- ? (sig:ma a) :: get sign
|
|
|
|
++ exp |= {a+@rh} ^- @s (exp:ma a) :: get exponent
|
2015-12-04 18:16:34 +03:00
|
|
|
++ toi |= {a+@rh} ^- (unit @s) (toi:ma a) :: round to integer
|
2015-12-04 01:58:42 +03:00
|
|
|
++ drg |= {a+@rh} ^- dn (drg:ma a) :: @rh to decimal float
|
|
|
|
++ grd |= {a+dn} ^- @rh (grd:ma a) :: decimal float to @rh
|
Add floating point parsing.
Floating point parses for doubles correctly and can be easily
implemented for the other types of floats (algorithm is general with
respect to the precision of the significand).
Some half-baked gates are included, like bey, which is unfortunate. I'm
not sure if an equivalent to bey exists somewhere. These won't be used
anywhere with actual math, though.
Warning: Don't try to print floats. It doesn't work and will crash or
something. Its not really implemented, because parsing is actually
fairly nontrivial mathwise. Parsing represents the problem
x.y -> r2^e, find (r, e) given (x, y)
whereas printing is the problem
r2^e -> x.y, find (x, y) given (r, e)
both of which are annoying to solve.
2014-05-30 18:29:38 +04:00
|
|
|
--
|
2013-12-09 01:23:03 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2013-09-29 00:21:18 +04:00
|
|
|
:: section 2cH, urbit time ::
|
|
|
|
::
|
2014-04-04 14:00:26 +04:00
|
|
|
++ year :: date to @d
|
2015-12-04 01:58:42 +03:00
|
|
|
|= det+date
|
2014-10-29 04:31:16 +03:00
|
|
|
^- @da
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ^= yer
|
|
|
|
?: a.det
|
|
|
|
(add 292.277.024.400 y.det)
|
|
|
|
(sub 292.277.024.400 (dec y.det))
|
|
|
|
=+ day=(yawn yer m.det d.t.det)
|
|
|
|
(yule day h.t.det m.t.det s.t.det f.t.det)
|
|
|
|
::
|
2014-04-04 14:00:26 +04:00
|
|
|
++ yore :: @d to date
|
2015-12-04 01:58:42 +03:00
|
|
|
|= now+@da
|
2013-09-29 00:21:18 +04:00
|
|
|
^- date
|
|
|
|
=+ rip=(yell now)
|
|
|
|
=+ ger=(yall d.rip)
|
|
|
|
:- ?: (gth y.ger 292.277.024.400)
|
|
|
|
[a=& y=(sub y.ger 292.277.024.400)]
|
|
|
|
[a=| y=+((sub 292.277.024.400 y.ger))]
|
|
|
|
[m.ger d.ger h.rip m.rip s.rip f.rip]
|
|
|
|
::
|
2014-04-04 14:00:26 +04:00
|
|
|
++ yell :: tarp from @d
|
2015-12-04 01:58:42 +03:00
|
|
|
|= now+@d
|
2013-09-29 00:21:18 +04:00
|
|
|
^- tarp
|
|
|
|
=+ sec=(rsh 6 1 now)
|
|
|
|
=+ ^= fan
|
|
|
|
=+ [muc=4 raw=(end 6 1 now)]
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- (list @ux)
|
2013-09-29 00:21:18 +04:00
|
|
|
?: |(=(0 raw) =(0 muc))
|
|
|
|
~
|
|
|
|
=> .(muc (dec muc))
|
|
|
|
[(cut 4 [muc 1] raw) $(raw (end 4 muc raw))]
|
|
|
|
=+ day=(div sec day:yo)
|
|
|
|
=> .(sec (mod sec day:yo))
|
|
|
|
=+ hor=(div sec hor:yo)
|
|
|
|
=> .(sec (mod sec hor:yo))
|
|
|
|
=+ mit=(div sec mit:yo)
|
|
|
|
=> .(sec (mod sec mit:yo))
|
|
|
|
[day hor mit sec fan]
|
|
|
|
::
|
2014-04-04 14:00:26 +04:00
|
|
|
++ yule :: time atom
|
2015-12-04 01:58:42 +03:00
|
|
|
|= rip+tarp
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @d
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ ^= sec ;: add
|
2013-09-29 00:21:18 +04:00
|
|
|
(mul d.rip day:yo)
|
|
|
|
(mul h.rip hor:yo)
|
|
|
|
(mul m.rip mit:yo)
|
|
|
|
s.rip
|
|
|
|
==
|
|
|
|
=+ ^= fac =+ muc=4
|
|
|
|
|- ^- @
|
|
|
|
?~ f.rip
|
|
|
|
0
|
|
|
|
=> .(muc (dec muc))
|
|
|
|
(add (lsh 4 muc i.f.rip) $(f.rip t.f.rip))
|
|
|
|
(con (lsh 6 1 sec) fac)
|
|
|
|
::
|
2014-04-04 14:00:26 +04:00
|
|
|
++ yall :: day # to day of year
|
2015-12-04 01:58:42 +03:00
|
|
|
|= day+@ud
|
|
|
|
^- {y+@ud m+@ud d+@ud}
|
2014-10-31 20:56:33 +03:00
|
|
|
=+ [era=0 cet=0 lep=*?]
|
2013-09-29 00:21:18 +04:00
|
|
|
=> .(era (div day era:yo), day (mod day era:yo))
|
|
|
|
=> ^+ .
|
|
|
|
?: (lth day +(cet:yo))
|
|
|
|
.(lep &, cet 0)
|
|
|
|
=> .(lep |, cet 1, day (sub day +(cet:yo)))
|
|
|
|
.(cet (add cet (div day cet:yo)), day (mod day cet:yo))
|
|
|
|
=+ yer=(add (mul 400 era) (mul 100 cet))
|
2015-12-08 04:46:28 +03:00
|
|
|
|- ^- {y+@ud m+@ud d+@ud}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ dis=?:(lep 366 365)
|
|
|
|
?. (lth day dis)
|
|
|
|
=+ ner=+(yer)
|
|
|
|
$(yer ner, day (sub day dis), lep =(0 (end 0 2 ner)))
|
2015-12-08 04:46:28 +03:00
|
|
|
|- ^- {y+@ud m+@ud d+@ud}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ [mot=0 cah=?:(lep moy:yo moh:yo)]
|
2015-12-08 04:46:28 +03:00
|
|
|
|- ^- {y+@ud m+@ud d+@ud}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ zis=(snag mot cah)
|
|
|
|
?: (lth day zis)
|
|
|
|
[yer +(mot) +(day)]
|
|
|
|
$(mot +(mot), day (sub day zis))
|
|
|
|
::
|
2014-04-04 14:00:26 +04:00
|
|
|
++ yawn :: days since Jesus
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {yer+@ud mot+@ud day+@ud}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @ud
|
|
|
|
=> .(mot (dec mot), day (dec day))
|
|
|
|
=> ^+ .
|
|
|
|
%= .
|
|
|
|
day
|
|
|
|
=+ cah=?:((yelp yer) moy:yo moh:yo)
|
|
|
|
|- ^- @ud
|
2013-12-09 01:23:03 +04:00
|
|
|
?: =(0 mot)
|
|
|
|
day
|
2013-09-29 00:21:18 +04:00
|
|
|
$(mot (dec mot), cah (slag 1 cah), day (add day (snag 0 cah)))
|
|
|
|
==
|
|
|
|
|- ^- @ud
|
|
|
|
?. =(0 (mod yer 4))
|
|
|
|
=+ ney=(dec yer)
|
|
|
|
$(yer ney, day (add day ?:((yelp ney) 366 365)))
|
|
|
|
?. =(0 (mod yer 100))
|
2013-11-26 00:58:33 +04:00
|
|
|
=+ nef=(sub yer 4)
|
|
|
|
$(yer nef, day (add day ?:((yelp nef) 1.461 1.460)))
|
2013-09-29 00:21:18 +04:00
|
|
|
?. =(0 (mod yer 400))
|
2013-11-26 00:58:33 +04:00
|
|
|
=+ nec=(sub yer 100)
|
|
|
|
$(yer nec, day (add day ?:((yelp nec) 36.525 36.524)))
|
2013-09-29 00:21:18 +04:00
|
|
|
(add day (mul (div yer 400) (add 1 (mul 4 36.524))))
|
|
|
|
::
|
2014-04-04 14:00:26 +04:00
|
|
|
++ yelp :: leap year
|
2015-12-04 01:58:42 +03:00
|
|
|
|= yer+@ud ^- ?
|
2013-09-29 00:21:18 +04:00
|
|
|
&(=(0 (mod yer 4)) |(!=(0 (mod yer 100)) =(0 (mod yer 400))))
|
|
|
|
::
|
2014-04-07 21:16:57 +04:00
|
|
|
++ yo :: time constants
|
2013-09-29 00:21:18 +04:00
|
|
|
|% ++ cet 36.524 :: (add 24 (mul 100 365))
|
|
|
|
++ day 86.400 :: (mul 24 hor)
|
|
|
|
++ era 146.097 :: (add 1 (mul 4 cet))
|
|
|
|
++ hor 3.600 :: (mul 60 mit)
|
|
|
|
++ jes 106.751.991.084.417 :: (mul 730.692.561 era)
|
|
|
|
++ mit 60
|
2015-12-04 01:58:42 +03:00
|
|
|
++ moh `(list @ud)`[31 28 31 30 31 30 31 31 30 31 30 31 ~]
|
|
|
|
++ moy `(list @ud)`[31 29 31 30 31 30 31 31 30 31 30 31 ~]
|
2013-09-29 00:21:18 +04:00
|
|
|
++ qad 126.144.001 :: (add 1 (mul 4 yer))
|
|
|
|
++ yer 31.536.000 :: (mul 365 day)
|
|
|
|
--
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2cI, almost macros ::
|
|
|
|
::
|
2015-03-31 01:12:18 +03:00
|
|
|
++ same |*(* +<) :: identity
|
|
|
|
++ head |*(^ +<-) :: get head
|
|
|
|
++ tail |*(^ +<+) :: get head
|
2015-04-14 03:29:54 +03:00
|
|
|
++ test |=(^ =(+<- +<+)) :: equality
|
2015-12-08 04:46:28 +03:00
|
|
|
++ cork |*({a+__(|=(* **)) b+gate} (corl b a)) :: compose forward
|
2015-03-31 01:12:18 +03:00
|
|
|
++ corl :: compose backwards
|
2015-12-08 04:46:28 +03:00
|
|
|
|* {a+gate b+__(|=(* **))}
|
2015-03-31 01:12:18 +03:00
|
|
|
=< +:|.((a (b))) :: type check
|
2015-12-08 04:46:28 +03:00
|
|
|
|* c=__(+<.b)
|
2015-03-31 01:12:18 +03:00
|
|
|
(a (b c))
|
|
|
|
::
|
2014-10-04 05:22:37 +04:00
|
|
|
++ cury :: curry left
|
2015-12-08 04:46:28 +03:00
|
|
|
|* {a+__(|=(^ **)) b+*}
|
|
|
|
|* c=__(+<+.a)
|
2014-08-08 21:36:32 +04:00
|
|
|
(a b c)
|
|
|
|
::
|
2014-10-04 05:22:37 +04:00
|
|
|
++ curr :: curry right
|
2015-12-08 04:46:28 +03:00
|
|
|
|* {a+__(|=(^ **)) c+*}
|
|
|
|
|* b=__(+<+.a)
|
2014-08-13 03:16:30 +04:00
|
|
|
(a b c)
|
|
|
|
::
|
2015-05-22 08:30:08 +03:00
|
|
|
++ gulf :: range list
|
2015-12-04 18:16:34 +03:00
|
|
|
|=({a+@ b+@} `(list @)`?:(=(a +(b)) ~ [a $(a +(a))]))
|
2015-05-22 08:30:08 +03:00
|
|
|
::
|
2014-10-04 05:22:37 +04:00
|
|
|
++ hard :: force coerce to type
|
2015-12-04 01:58:42 +03:00
|
|
|
|* han+_+(* *)
|
2015-12-05 02:59:29 +03:00
|
|
|
|= fud+* ^- han
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %hard
|
|
|
|
=+ gol=(han fud)
|
|
|
|
?>(=(gol fud) gol)
|
|
|
|
::
|
2014-10-04 05:22:37 +04:00
|
|
|
++ soft :: maybe coerce to type
|
2015-12-04 01:58:42 +03:00
|
|
|
|* han+_+(* *)
|
2015-12-05 02:59:29 +03:00
|
|
|
|= fud+* ^- (unit han)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ gol=(han fud)
|
|
|
|
?.(=(gol fud) ~ [~ gol])
|
2015-05-30 01:05:01 +03:00
|
|
|
::
|
|
|
|
++ slog :: deify printf
|
2015-12-04 01:58:42 +03:00
|
|
|
=| pri+@ :: priority level
|
|
|
|
|= a+tang ^+ same :: .= ~&(%a 1)
|
2015-07-28 01:39:36 +03:00
|
|
|
?~(a same ~>(%slog.[pri i.a] $(a t.a))) :: ((slog ~[>%a<]) 1)
|
2015-05-30 01:05:01 +03:00
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ mean |=(a+tang (fear (flop a) |.(!!))) :: deify stack trace
|
2015-05-30 01:05:01 +03:00
|
|
|
++ fear :: insert user mean
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+tang __(|?(**))}
|
2015-05-30 01:05:01 +03:00
|
|
|
^+ (+<+)
|
|
|
|
=> .(a `tang`a)
|
|
|
|
?~ a (+<+)
|
2015-07-06 22:00:01 +03:00
|
|
|
~_(i.a $(a t.a))
|
2015-07-29 23:43:55 +03:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2cJ, extra math ::
|
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ sqt :: sqrt w/remainder
|
2015-07-29 23:43:55 +03:00
|
|
|
~/ %sqt
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@ ^- {p+@ q+@}
|
2015-07-29 23:43:55 +03:00
|
|
|
?~ a [0 0]
|
|
|
|
=+ [q=(div (dec (xeb a)) 2) r=0]
|
|
|
|
=- [-.b (sub a +.b)]
|
|
|
|
^= b |-
|
|
|
|
=+ s=(add r (bex q))
|
|
|
|
=+ t=(mul s s)
|
|
|
|
?: =(q 0)
|
|
|
|
?: (lte t a) [s t] [r (mul r r)]
|
|
|
|
?: (lte t a) $(r s, q (dec q)) $(q (dec q))
|
|
|
|
::
|
|
|
|
++ dvr
|
|
|
|
~/ %dvr
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@} ^- {p+@ q+@}
|
2015-07-29 23:43:55 +03:00
|
|
|
?< =(0 b)
|
|
|
|
[(div a b) (mod a b)]
|
|
|
|
::
|
|
|
|
++ pow
|
|
|
|
~/ %pow
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
2015-07-29 23:43:55 +03:00
|
|
|
?: =(b 0) 1
|
|
|
|
|- ?: =(b 1) a
|
|
|
|
=+ c=$(b (div b 2))
|
|
|
|
=+ d=(mul c c)
|
|
|
|
?~ (dis b 1) d (mul d a)
|
2013-09-29 00:21:18 +04:00
|
|
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::: ::
|
|
|
|
:::: chapter 2d, containers ::::
|
|
|
|
:: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2dA, sets ::
|
|
|
|
::
|
|
|
|
++ apt :: set invariant
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+(tree)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-12-09 01:23:03 +04:00
|
|
|
&
|
2015-06-24 23:50:35 +03:00
|
|
|
?& ?~(l.a & ?&((vor n.a n.l.a) (hor n.l.a n.a) $(a l.a)))
|
|
|
|
?~(r.a & ?&((vor n.a n.r.a) (hor n.a n.r.a) $(a r.a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ in :: set engine
|
|
|
|
~/ %in
|
2015-12-04 01:58:42 +03:00
|
|
|
|/ a+(set)
|
2014-06-02 05:31:32 +04:00
|
|
|
+- all :: logical AND
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %all
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+_+(* ?)
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- ?
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-09-29 00:21:18 +04:00
|
|
|
&
|
|
|
|
?&((b n.a) $(a l.a) $(a r.a))
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- any :: logical OR
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %any
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+_+(* ?)
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- ?
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-09-29 00:21:18 +04:00
|
|
|
|
|
|
|
|
?|((b n.a) $(a l.a) $(a r.a))
|
|
|
|
::
|
2015-07-02 08:21:38 +03:00
|
|
|
+- bif :: splits a by b
|
|
|
|
~/ %bif
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+*
|
2015-07-02 08:21:38 +03:00
|
|
|
^+ [l=a r=a]
|
|
|
|
=< [+< +>]
|
|
|
|
|- ^+ a
|
|
|
|
?~ a
|
|
|
|
[b ~ ~]
|
|
|
|
?: =(b n.a)
|
|
|
|
a
|
|
|
|
?: (hor b n.a)
|
|
|
|
=+ c=$(a l.a)
|
|
|
|
?> ?=(^ c)
|
|
|
|
[n.c l.c [n.a r.c r.a]]
|
|
|
|
=+ c=$(a r.a)
|
|
|
|
?> ?=(^ c)
|
|
|
|
[n.c [n.a l.a l.c] r.c]
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- del :: b without any a
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %del
|
2013-12-21 06:35:33 +04:00
|
|
|
|* b=*
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ a
|
|
|
|
?~ a
|
|
|
|
~
|
|
|
|
?. =(b n.a)
|
2013-12-09 01:23:03 +04:00
|
|
|
?: (hor b n.a)
|
|
|
|
[n.a $(a l.a) r.a]
|
2013-09-29 00:21:18 +04:00
|
|
|
[n.a l.a $(a r.a)]
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- {_?($~ __(a))}
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ l.a r.a
|
|
|
|
?~ r.a l.a
|
|
|
|
?: (vor n.l.a n.r.a)
|
|
|
|
[n.l.a l.l.a $(l.a r.l.a)]
|
|
|
|
[n.r.a $(r.a l.r.a) r.r.a]
|
|
|
|
::
|
2015-06-25 02:21:06 +03:00
|
|
|
+- dif :: difference
|
|
|
|
~/ %dif
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+__(a)
|
2015-06-25 02:21:06 +03:00
|
|
|
|- ^+ a
|
|
|
|
?~ b
|
|
|
|
a
|
2015-07-02 08:21:38 +03:00
|
|
|
=+ c=(bif(+< a) n.b)
|
2015-06-25 02:21:06 +03:00
|
|
|
?> ?=(^ c)
|
|
|
|
=+ d=$(a l.c, b l.b)
|
|
|
|
=+ e=$(a r.c, b r.b)
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- {_?($~ __(a))}
|
2015-06-25 02:21:06 +03:00
|
|
|
?~ d e
|
|
|
|
?~ e d
|
|
|
|
?: (vor n.d n.e)
|
|
|
|
[n.d l.d $(d r.d)]
|
|
|
|
[n.e $(e l.e) r.e]
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- dig :: axis of a in b
|
2015-12-04 01:58:42 +03:00
|
|
|
|= b+*
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ c=1
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- (unit @)
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ a ~
|
|
|
|
?: =(b n.a) [~ u=(peg c 2)]
|
2015-04-20 23:42:18 +03:00
|
|
|
?: (hor b n.a)
|
2013-09-29 00:21:18 +04:00
|
|
|
$(a l.a, c (peg c 6))
|
|
|
|
$(a r.a, c (peg c 7))
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- gas :: concatenate
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %gas
|
2015-12-05 02:59:29 +03:00
|
|
|
|= b+(list __(?>(?=(^ a) n.a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ a
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ b
|
2013-09-29 00:21:18 +04:00
|
|
|
a
|
2013-12-21 06:35:33 +04:00
|
|
|
$(b t.b, a (put(+< a) i.b))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- has :: b exists in a check
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %has
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+*
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- ?
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-09-29 00:21:18 +04:00
|
|
|
|
|
|
|
|
?: =(b n.a)
|
|
|
|
&
|
|
|
|
?: (hor b n.a)
|
|
|
|
$(a l.a)
|
|
|
|
$(a r.a)
|
2014-06-11 07:02:20 +04:00
|
|
|
::
|
2014-06-12 07:14:50 +04:00
|
|
|
+- int :: intersection
|
|
|
|
~/ %int
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+__(a)
|
2014-06-11 21:12:10 +04:00
|
|
|
|- ^+ a
|
|
|
|
?~ b
|
2014-06-12 07:14:50 +04:00
|
|
|
~
|
2014-06-11 21:12:10 +04:00
|
|
|
?~ a
|
2014-06-12 07:14:50 +04:00
|
|
|
~
|
2014-06-11 21:12:10 +04:00
|
|
|
?. (vor n.a n.b)
|
|
|
|
$(a b, b a)
|
|
|
|
?: =(n.b n.a)
|
|
|
|
[n.a $(a l.a, b l.b) $(a r.a, b r.b)]
|
|
|
|
?: (hor n.b n.a)
|
2014-06-12 07:14:50 +04:00
|
|
|
%- uni(+< $(a l.a, b [n.b l.b ~])) $(b r.b)
|
|
|
|
%- uni(+< $(a r.a, b [n.b ~ r.b])) $(b l.b)
|
2014-06-11 21:12:10 +04:00
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- put :: puts b in a, sorted
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %put
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+*
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ a
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-09-29 00:21:18 +04:00
|
|
|
[b ~ ~]
|
|
|
|
?: =(b n.a)
|
|
|
|
a
|
|
|
|
?: (hor b n.a)
|
|
|
|
=+ c=$(a l.a)
|
|
|
|
?> ?=(^ c)
|
|
|
|
?: (vor n.a n.c)
|
|
|
|
[n.a c r.a]
|
|
|
|
[n.c l.c [n.a r.c r.a]]
|
|
|
|
=+ c=$(a r.a)
|
|
|
|
?> ?=(^ c)
|
|
|
|
?: (vor n.a n.c)
|
|
|
|
[n.a l.a c]
|
|
|
|
[n.c [n.a l.a l.c] r.c]
|
|
|
|
::
|
2015-01-09 02:56:48 +03:00
|
|
|
+- rep :: replace by product
|
2015-12-08 04:46:28 +03:00
|
|
|
|* b+__(|=({* *} +<+))
|
2013-09-29 00:21:18 +04:00
|
|
|
|-
|
2015-01-09 02:56:48 +03:00
|
|
|
?~ a +<+.b
|
|
|
|
$(a r.a, +<+.b $(a l.a, +<+.b (b n.a +<+.b)))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- tap :: list tiles a set
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %tap
|
2015-12-04 01:58:42 +03:00
|
|
|
|= b+(list __(?>(?=(^ a) n.a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
^+ b
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-09-29 00:21:18 +04:00
|
|
|
b
|
|
|
|
$(a r.a, b [n.a $(a l.a)])
|
|
|
|
::
|
2014-06-12 07:14:50 +04:00
|
|
|
+- uni :: union
|
|
|
|
~/ %uni
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+__(a)
|
2015-01-24 08:16:12 +03:00
|
|
|
?: =(a b) a
|
2014-06-12 07:14:50 +04:00
|
|
|
|- ^+ a
|
|
|
|
?~ b
|
|
|
|
a
|
|
|
|
?~ a
|
|
|
|
b
|
|
|
|
?: (vor n.a n.b)
|
|
|
|
?: =(n.b n.a)
|
|
|
|
[n.b $(a l.a, b l.b) $(a r.a, b r.b)]
|
|
|
|
?: (hor n.b n.a)
|
|
|
|
$(a [n.a $(a l.a, b [n.b l.b ~]) r.a], b r.b)
|
|
|
|
$(a [n.a l.a $(a r.a, b [n.b ~ r.b])], b l.b)
|
|
|
|
?: =(n.a n.b)
|
|
|
|
[n.b $(b l.b, a l.a) $(b r.b, a r.a)]
|
|
|
|
?: (hor n.a n.b)
|
|
|
|
$(b [n.b $(b l.b, a [n.a l.a ~]) r.b], a r.a)
|
|
|
|
$(b [n.b l.b $(b r.b, a [n.a ~ r.a])], a l.a)
|
|
|
|
::
|
2014-07-16 22:54:53 +04:00
|
|
|
+- wyt :: size of set
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- @
|
|
|
|
?~(a 0 +((add $(a l.a) $(a r.a))))
|
|
|
|
--
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2dB, maps ::
|
|
|
|
::
|
|
|
|
++ ept :: map invariant
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+(tree {p+* q+*})
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-12-09 01:23:03 +04:00
|
|
|
&
|
2015-06-24 23:50:35 +03:00
|
|
|
?& ?~(l.a & ?&((vor p.n.a p.n.l.a) (gor p.n.l.a p.n.a) $(a l.a)))
|
|
|
|
?~(r.a & ?&((vor p.n.a p.n.r.a) (gor p.n.a p.n.r.a) $(a l.a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2014-04-22 02:25:35 +04:00
|
|
|
++ ja :: jar engine
|
2015-12-04 01:58:42 +03:00
|
|
|
|/ a+(jar)
|
2014-06-02 05:31:32 +04:00
|
|
|
+- get :: gets list by key
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+*
|
2014-04-22 02:25:35 +04:00
|
|
|
=+ c=(~(get by a) b)
|
|
|
|
?~(c ~ u.c)
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- add :: adds key-list pair
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {b+* c+*}
|
2014-07-03 22:07:21 +04:00
|
|
|
=+ d=(get(+< a) b)
|
|
|
|
(~(put by a) b [c d])
|
2014-04-22 02:25:35 +04:00
|
|
|
--
|
|
|
|
::
|
|
|
|
++ ju :: jug engine
|
2015-12-04 01:58:42 +03:00
|
|
|
|/ a+(jug)
|
2014-07-03 05:53:53 +04:00
|
|
|
+- del :: del key-set pair
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {b+* c+*}
|
2014-07-03 05:53:53 +04:00
|
|
|
^+ a
|
|
|
|
=+ d=(get(+< a) b)
|
|
|
|
=+ e=(~(del in d) c)
|
|
|
|
?~ e
|
|
|
|
(~(del by a) b)
|
|
|
|
(~(put by a) b e)
|
|
|
|
::
|
2015-06-03 03:40:34 +03:00
|
|
|
+- gas :: concatenate
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+(list {p+* q+*})
|
|
|
|
=> .(b `(list __(?>(?=({{* ^} ^} a) [p=p q=n.q]:n.a)))`b)
|
2015-06-03 03:40:34 +03:00
|
|
|
|- ^+ a
|
|
|
|
?~ b
|
|
|
|
a
|
|
|
|
$(b t.b, a (put(+< a) p.i.b q.i.b))
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- get :: gets set by key
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+*
|
2014-04-22 02:25:35 +04:00
|
|
|
=+ c=(~(get by a) b)
|
|
|
|
?~(c ~ u.c)
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- has :: existence check
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {b+* c+*}
|
2014-04-23 21:02:36 +04:00
|
|
|
^- ?
|
|
|
|
(~(has in (get(+< a) b)) c)
|
|
|
|
::
|
2014-06-10 00:09:14 +04:00
|
|
|
+- put :: add key-set pair
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {b+* c+*}
|
2014-04-23 21:02:36 +04:00
|
|
|
^+ a
|
|
|
|
=+ d=(get(+< a) b)
|
|
|
|
(~(put by a) b (~(put in d) c))
|
2014-04-22 02:25:35 +04:00
|
|
|
--
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ by :: map engine
|
|
|
|
~/ %by
|
2015-12-04 01:58:42 +03:00
|
|
|
|/ a+(map)
|
2014-06-02 05:31:32 +04:00
|
|
|
+- all :: logical AND
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %all
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+_+(* ?)
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- ?
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-09-29 00:21:18 +04:00
|
|
|
&
|
|
|
|
?&((b q.n.a) $(a l.a) $(a r.a))
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- any :: logical OR
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %any
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+_+(* ?)
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- ?
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-09-29 00:21:18 +04:00
|
|
|
|
|
|
|
|
?|((b q.n.a) $(a l.a) $(a r.a))
|
|
|
|
::
|
2015-07-02 08:21:38 +03:00
|
|
|
+- bif :: splits a by b
|
|
|
|
~/ %bif
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {b+* c+*}
|
2015-07-02 08:21:38 +03:00
|
|
|
^+ [l=a r=a]
|
|
|
|
=< [+< +>]
|
|
|
|
|- ^+ a
|
|
|
|
?~ a
|
|
|
|
[[b c] ~ ~]
|
|
|
|
?: =(b p.n.a)
|
|
|
|
?: =(c q.n.a)
|
|
|
|
a
|
|
|
|
[[b c] l.a r.a]
|
|
|
|
?: (gor b p.n.a)
|
|
|
|
=+ d=$(a l.a)
|
|
|
|
?> ?=(^ d)
|
|
|
|
[n.d l.d [n.a r.d r.a]]
|
|
|
|
=+ d=$(a r.a)
|
|
|
|
?> ?=(^ d)
|
|
|
|
[n.d [n.a l.a l.d] r.d]
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- del :: delete at key b
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %del
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+*
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ a
|
|
|
|
?~ a
|
|
|
|
~
|
|
|
|
?. =(b p.n.a)
|
2013-12-09 01:23:03 +04:00
|
|
|
?: (gor b p.n.a)
|
|
|
|
[n.a $(a l.a) r.a]
|
2013-09-29 00:21:18 +04:00
|
|
|
[n.a l.a $(a r.a)]
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- {_?($~ __(a))}
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ l.a r.a
|
|
|
|
?~ r.a l.a
|
|
|
|
?: (vor p.n.l.a p.n.r.a)
|
|
|
|
[n.l.a l.l.a $(l.a r.l.a)]
|
|
|
|
[n.r.a $(r.a l.r.a) r.r.a]
|
|
|
|
::
|
2015-06-25 02:21:06 +03:00
|
|
|
+- dif :: difference
|
|
|
|
~/ %dif
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+__(a)
|
2015-06-25 02:21:06 +03:00
|
|
|
|- ^+ a
|
|
|
|
?~ b
|
|
|
|
a
|
2015-07-02 08:21:38 +03:00
|
|
|
=+ c=(bif(+< a) n.b)
|
2015-06-25 02:21:06 +03:00
|
|
|
?> ?=(^ c)
|
|
|
|
=+ d=$(a l.c, b l.b)
|
|
|
|
=+ e=$(a r.c, b r.b)
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- {_?($~ __(a))}
|
2015-06-25 02:21:06 +03:00
|
|
|
?~ d e
|
|
|
|
?~ e d
|
|
|
|
?: (vor p.n.d p.n.e)
|
|
|
|
[n.d l.d $(d r.d)]
|
|
|
|
[n.e $(e l.e) r.e]
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- dig :: axis of b key
|
2015-12-05 02:59:29 +03:00
|
|
|
|= b+*
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ c=1
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- (unit @)
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ a ~
|
|
|
|
?: =(b p.n.a) [~ u=(peg c 2)]
|
|
|
|
?: (gor b p.n.a)
|
|
|
|
$(a l.a, c (peg c 6))
|
|
|
|
$(a r.a, c (peg c 7))
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- gas :: concatenate
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %gas
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+(list {p+* q+*})
|
|
|
|
=> .(b `(list __(?>(?=(^ a) n.a)))`b)
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ a
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ b
|
2013-09-29 00:21:18 +04:00
|
|
|
a
|
2013-12-21 02:26:23 +04:00
|
|
|
$(b t.b, a (put(+< a) p.i.b q.i.b))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- get :: grab value by key
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %get
|
2015-12-04 01:58:42 +03:00
|
|
|
|= b+*
|
|
|
|
^- {_|($~ {$~ u+__(?>(?=(^ a) q.n.a))})}
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-09-29 00:21:18 +04:00
|
|
|
~
|
|
|
|
?: =(b p.n.a)
|
|
|
|
[~ u=q.n.a]
|
|
|
|
?: (gor b p.n.a)
|
|
|
|
$(a l.a)
|
|
|
|
$(a r.a)
|
|
|
|
::
|
2014-07-22 18:10:01 +04:00
|
|
|
+- got
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+*
|
2014-07-22 18:10:01 +04:00
|
|
|
%- need
|
|
|
|
%- get(+< a) b
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- has :: key existence check
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %has
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+*
|
2013-12-21 02:26:23 +04:00
|
|
|
!=(~ (get(+< a) b))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-12 07:14:50 +04:00
|
|
|
+- int :: intersection
|
|
|
|
~/ %int
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+__(a)
|
2014-06-12 07:14:50 +04:00
|
|
|
|- ^+ a
|
|
|
|
?~ b
|
|
|
|
~
|
|
|
|
?~ a
|
|
|
|
~
|
|
|
|
?: (vor p.n.a p.n.b)
|
|
|
|
?: =(p.n.b p.n.a)
|
|
|
|
[n.b $(a l.a, b l.b) $(a r.a, b r.b)]
|
2015-02-27 09:35:41 +03:00
|
|
|
?: (gor p.n.b p.n.a)
|
2014-06-12 07:14:50 +04:00
|
|
|
%- uni(+< $(a l.a, b [n.b l.b ~])) $(b r.b)
|
|
|
|
%- uni(+< $(a r.a, b [n.b ~ r.b])) $(b l.b)
|
|
|
|
?: =(p.n.a p.n.b)
|
|
|
|
[n.b $(b l.b, a l.a) $(b r.b, a r.a)]
|
2015-02-27 09:35:41 +03:00
|
|
|
?: (gor p.n.a p.n.b)
|
2014-06-12 07:14:50 +04:00
|
|
|
%- uni(+< $(b l.b, a [n.a l.a ~])) $(a r.a)
|
|
|
|
%- uni(+< $(b r.b, a [n.a ~ r.a])) $(a l.a)
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- mar :: add with validation
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {b+__(?>(?=(^ a) p.n.a)) c+(unit __(?>(?=(^ a) q.n.a)))}
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ c
|
|
|
|
(del b)
|
|
|
|
(put b u.c)
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- put :: adds key-value pair
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %put
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {b+* c+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ a
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-09-29 00:21:18 +04:00
|
|
|
[[b c] ~ ~]
|
|
|
|
?: =(b p.n.a)
|
|
|
|
?: =(c q.n.a)
|
|
|
|
a
|
|
|
|
[[b c] l.a r.a]
|
|
|
|
?: (gor b p.n.a)
|
|
|
|
=+ d=$(a l.a)
|
2015-06-24 23:50:35 +03:00
|
|
|
?> ?=(^ d)
|
|
|
|
?: (vor p.n.a p.n.d)
|
|
|
|
[n.a d r.a]
|
|
|
|
[n.d l.d [n.a r.d r.a]]
|
|
|
|
=+ d=$(a r.a)
|
|
|
|
?> ?=(^ d)
|
|
|
|
?: (vor p.n.a p.n.d)
|
|
|
|
[n.a l.a d]
|
|
|
|
[n.d [n.a l.a l.d] r.d]
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- rep :: replace by product
|
2015-12-05 02:59:29 +03:00
|
|
|
|* b+__(|=({* *} +<+))
|
2013-09-29 00:21:18 +04:00
|
|
|
|-
|
2015-01-09 02:56:48 +03:00
|
|
|
?~ a +<+.b
|
|
|
|
$(a r.a, +<+.b $(a l.a, +<+.b (b n.a +<+.b)))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- rib :: transform + product
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {b+* c+_+(* *)}
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ [b a]
|
|
|
|
?~ a [b ~]
|
|
|
|
=+ d=(c n.a b)
|
|
|
|
=. n.a +.d
|
|
|
|
=+ e=$(a l.a, b -.d)
|
|
|
|
=+ f=$(a r.a, b -.e)
|
|
|
|
[-.f [n.a +.e +.f]]
|
|
|
|
::
|
2014-10-29 23:59:01 +03:00
|
|
|
+- run :: apply gate to values
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+_+(* *)
|
2013-12-09 01:23:03 +04:00
|
|
|
|-
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ a a
|
2014-10-29 23:59:01 +03:00
|
|
|
[n=[p=p.n.a q=(b q.n.a)] l=$(a l.a) r=$(a r.a)]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- tap :: listify pairs
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %tap
|
2015-12-04 01:58:42 +03:00
|
|
|
|= b+(list __(?>(?=(^ a) n.a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
^+ b
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ a
|
2013-09-29 00:21:18 +04:00
|
|
|
b
|
|
|
|
$(a r.a, b [n.a $(a l.a)])
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- uni :: union, merge
|
2014-04-16 00:07:11 +04:00
|
|
|
~/ %uni
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+__(a)
|
2014-06-12 07:14:50 +04:00
|
|
|
|- ^+ a
|
|
|
|
?~ b
|
|
|
|
a
|
|
|
|
?~ a
|
|
|
|
b
|
|
|
|
?: (vor p.n.a p.n.b)
|
|
|
|
?: =(p.n.b p.n.a)
|
|
|
|
[n.b $(a l.a, b l.b) $(a r.a, b r.b)]
|
2015-02-27 09:35:41 +03:00
|
|
|
?: (gor p.n.b p.n.a)
|
2014-06-12 07:14:50 +04:00
|
|
|
$(a [n.a $(a l.a, b [n.b l.b ~]) r.a], b r.b)
|
|
|
|
$(a [n.a l.a $(a r.a, b [n.b ~ r.b])], b l.b)
|
|
|
|
?: =(p.n.a p.n.b)
|
|
|
|
[n.b $(b l.b, a l.a) $(b r.b, a r.a)]
|
2015-02-27 09:35:41 +03:00
|
|
|
?: (gor p.n.a p.n.b)
|
2014-06-12 07:14:50 +04:00
|
|
|
$(b [n.b $(b l.b, a [n.a l.a ~]) r.b], a r.a)
|
|
|
|
$(b [n.b l.b $(b r.b, a [n.a ~ r.a])], a l.a)
|
2014-04-16 00:07:11 +04:00
|
|
|
::
|
2014-10-29 23:59:01 +03:00
|
|
|
+- urn :: apply gate to nodes
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+_+({* *} *)
|
2014-06-19 07:27:36 +04:00
|
|
|
|-
|
|
|
|
?~ a ~
|
|
|
|
[n=[p=p.n.a q=(b p.n.a q.n.a)] l=$(a l.a) r=$(a r.a)]
|
2014-04-16 00:07:11 +04:00
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- wyt :: depth of map
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- @
|
|
|
|
?~(a 0 +((add $(a l.a) $(a r.a))))
|
|
|
|
--
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2dC, queues ::
|
|
|
|
::
|
|
|
|
++ to :: queue engine
|
2015-12-04 01:58:42 +03:00
|
|
|
|/ a+(qeu)
|
2013-09-29 00:21:18 +04:00
|
|
|
+- bal
|
|
|
|
|- ^+ a
|
2013-12-24 00:49:15 +04:00
|
|
|
?~ a ~
|
2015-12-08 05:04:19 +03:00
|
|
|
?. |(?=($~ l.a) (vor n.a n.l.a))
|
2013-09-29 00:21:18 +04:00
|
|
|
$(a [n.l.a l.l.a $(a [n.a r.l.a r.a])])
|
2015-12-08 05:04:19 +03:00
|
|
|
?. |(?=($~ r.a) (vor n.a n.r.a))
|
2013-09-29 00:21:18 +04:00
|
|
|
$(a [n.r.a $(a [n.a l.a l.r.a]) r.r.a])
|
|
|
|
a
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- dep :: max depth of queue
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- @
|
|
|
|
?~ a 0
|
|
|
|
+((max $(a l.a) $(a r.a)))
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- gas :: insert list to que
|
2015-12-04 01:58:42 +03:00
|
|
|
|= b+(list __(?>(?=(^ a) n.a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ a
|
2013-12-21 02:26:23 +04:00
|
|
|
?~(b a $(b t.b, a (put(+< a) i.b)))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- get :: head-tail pair
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^+ ?>(?=(^ a) [p=n.a q=*(qeu __(n.a))])
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ a
|
|
|
|
!!
|
|
|
|
?~ r.a
|
|
|
|
[n.a l.a]
|
|
|
|
=+ b=$(a r.a)
|
|
|
|
:- p.b
|
2015-12-04 01:58:42 +03:00
|
|
|
?: |(?=($~ q.b) (vor n.a n.q.b))
|
2013-09-29 00:21:18 +04:00
|
|
|
[n.a l.a q.b]
|
|
|
|
[n.q.b [n.a l.a l.q.b] r.q.b]
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- nap :: removes head
|
2013-09-29 00:21:18 +04:00
|
|
|
?> ?=(^ a)
|
|
|
|
?: =(~ l.a) r.a
|
2013-12-21 02:26:23 +04:00
|
|
|
=+ b=get(+< l.a)
|
|
|
|
bal(+< ^+(a [p.b q.b r.a]))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-17 11:57:24 +04:00
|
|
|
+- put :: insert new tail
|
2015-12-04 01:58:42 +03:00
|
|
|
|* b+*
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ a
|
|
|
|
?~ a
|
|
|
|
[b ~ ~]
|
2013-12-21 02:26:23 +04:00
|
|
|
bal(+< a(l $(a l.a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- tap :: adds list to end
|
2015-12-04 01:58:42 +03:00
|
|
|
|= b+(list __(?>(?=(^ a) n.a)))
|
2014-12-04 02:21:55 +03:00
|
|
|
=+ z=0 :: XX breaks jet match
|
2013-09-29 00:21:18 +04:00
|
|
|
^+ b
|
|
|
|
?~ a
|
|
|
|
b
|
|
|
|
$(a r.a, b [n.a $(a l.a)])
|
|
|
|
::
|
2014-06-02 05:31:32 +04:00
|
|
|
+- top :: produces head
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- (unit __(?>(?=(^ a) n.a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ a ~
|
|
|
|
?~(r.a [~ n.a] $(a r.a))
|
|
|
|
--
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2dD, casual containers ::
|
|
|
|
::
|
|
|
|
++ mo :: make a map
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+(pole ^)
|
|
|
|
=> .(a ^.(|*(a+_|($~ ^) ?~(a ~ [i=-.a t=$(a +.a)])) a))
|
2014-10-27 05:29:32 +03:00
|
|
|
=> .(a ^.(homo a))
|
2015-12-04 01:58:42 +03:00
|
|
|
=> .(a `(list {p+__(-<.a) q+__(->.a)})`a)
|
|
|
|
=+ b=*(map __(?>(?=(^ a) p.i.a)) __(?>(?=(^ a) q.i.a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
(~(gas by b) a)
|
|
|
|
::
|
|
|
|
++ sa :: make a set
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+(list)
|
|
|
|
=> .(a `__((homo a))`a)
|
|
|
|
=+ b=*(set __(?>(?=(^ a) i.a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
(~(gas in b) a)
|
2014-03-20 05:05:42 +04:00
|
|
|
::
|
2014-10-20 23:47:08 +04:00
|
|
|
++ qu :: qeu from list
|
2015-12-04 01:58:42 +03:00
|
|
|
|* a+(list)
|
|
|
|
=> .(a `__((homo a))`a)
|
|
|
|
=+ b=*(qeu __(?>(?=(^ a) i.a)))
|
2014-10-20 23:47:08 +04:00
|
|
|
(~(gas to b) a)
|
2013-09-29 00:21:18 +04:00
|
|
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::: ::
|
|
|
|
:::: chapter 2e, miscellaneous libs ::::
|
|
|
|
:: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eA, packing ::
|
|
|
|
::
|
|
|
|
++ cue :: unpack
|
|
|
|
~/ %cue
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@
|
2013-09-29 00:21:18 +04:00
|
|
|
^- *
|
|
|
|
=+ b=0
|
2015-12-04 01:58:42 +03:00
|
|
|
=+ m=`(map @ *)`~
|
2013-09-29 00:21:18 +04:00
|
|
|
=< q
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- {p+@ q+* r+(map @ *)}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 (cut 0 [b 1] a))
|
|
|
|
=+ c=(rub +(b) a)
|
|
|
|
[+(p.c) q.c (~(put by m) b q.c)]
|
|
|
|
=+ c=(add 2 b)
|
|
|
|
?: =(0 (cut 0 [+(b) 1] a))
|
|
|
|
=+ u=$(b c)
|
|
|
|
=+ v=$(b (add p.u c), m r.u)
|
|
|
|
=+ w=[q.u q.v]
|
|
|
|
[(add 2 (add p.u p.v)) w (~(put by r.v) b w)]
|
|
|
|
=+ d=(rub c a)
|
|
|
|
[(add 2 p.d) (need (~(get by m) q.d)) m]
|
|
|
|
::
|
|
|
|
++ jam :: pack
|
|
|
|
~/ %jam
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+*
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @
|
|
|
|
=+ b=0
|
2015-12-04 01:58:42 +03:00
|
|
|
=+ m=`(map * @)`~
|
2013-09-29 00:21:18 +04:00
|
|
|
=< q
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- {p+@ q+@ r+(map * @)}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ c=(~(get by m) a)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ c
|
2013-09-29 00:21:18 +04:00
|
|
|
=> .(m (~(put by m) a b))
|
|
|
|
?: ?=(@ a)
|
|
|
|
=+ d=(mat a)
|
|
|
|
[(add 1 p.d) (lsh 0 1 q.d) m]
|
|
|
|
=> .(b (add 2 b))
|
|
|
|
=+ d=$(a -.a)
|
|
|
|
=+ e=$(a +.a, b (add b p.d), m r.d)
|
|
|
|
[(add 2 (add p.d p.e)) (mix 1 (lsh 0 2 (cat 0 q.d q.e))) r.e]
|
|
|
|
?: ?&(?=(@ a) (lte (met 0 a) (met 0 u.c)))
|
|
|
|
=+ d=(mat a)
|
|
|
|
[(add 1 p.d) (lsh 0 1 q.d) m]
|
|
|
|
=+ d=(mat u.c)
|
|
|
|
[(add 2 p.d) (mix 3 (lsh 0 2 q.d)) m]
|
|
|
|
::
|
|
|
|
++ mat :: length-encode
|
|
|
|
~/ %mat
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@
|
|
|
|
^- {p+@ q+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 a)
|
|
|
|
[1 1]
|
|
|
|
=+ b=(met 0 a)
|
|
|
|
=+ c=(met 0 b)
|
|
|
|
:- (add (add c c) b)
|
|
|
|
(cat 0 (bex c) (mix (end 0 (dec c) b) (lsh 0 (dec c) a)))
|
|
|
|
::
|
|
|
|
++ rub :: length-decode
|
|
|
|
~/ %rub
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+@}
|
|
|
|
^- {p+@ q+@}
|
2014-05-09 23:45:41 +04:00
|
|
|
=+ ^= c
|
|
|
|
=+ [c=0 m=(met 0 b)]
|
|
|
|
|- ?< (gth c m)
|
|
|
|
?. =(0 (cut 0 [(add a c) 1] b))
|
|
|
|
c
|
|
|
|
$(c +(c))
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 c)
|
|
|
|
[1 0]
|
|
|
|
=+ d=(add a +(c))
|
|
|
|
=+ e=(add (bex (dec c)) (cut 0 [d (dec c)] b))
|
|
|
|
[(add (add c c) e) (cut 0 [(add d (dec c)) e] b)]
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eB, parsing (tracing) ::
|
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ last |= {zyc+hair naz+hair} :: farther trace
|
2013-09-29 00:21:18 +04:00
|
|
|
^- hair
|
|
|
|
?: =(p.zyc p.naz)
|
|
|
|
?:((gth q.zyc q.naz) zyc naz)
|
|
|
|
?:((gth p.zyc p.naz) zyc naz)
|
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ lust |= {weq+char naz+hair} :: detect newline
|
2013-09-29 00:21:18 +04:00
|
|
|
^- hair
|
|
|
|
?:(=(10 weq) [+(p.naz) 1] [p.naz +(q.naz)])
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eC, parsing (custom rules) ::
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ cold :: replace w/ constant
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %cold
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {cus+* sef+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-05 02:59:29 +03:00
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vex=(sef tub)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-09-29 00:21:18 +04:00
|
|
|
vex
|
|
|
|
[p=p.vex q=[~ u=[p=cus q=q.u.q.vex]]]
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ cook :: apply gate
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %cook
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {poq+_+(* *) sef+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-04 01:58:42 +03:00
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vex=(sef tub)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-09-29 00:21:18 +04:00
|
|
|
vex
|
|
|
|
[p=p.vex q=[~ u=[p=(poq p.u.q.vex) q=q.u.q.vex]]]
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ easy :: always parse
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %easy
|
2015-12-04 01:58:42 +03:00
|
|
|
|* huf+*
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-04 01:58:42 +03:00
|
|
|
|= tub+nail
|
|
|
|
^- (like __(huf))
|
2013-09-29 00:21:18 +04:00
|
|
|
[p=p.tub q=[~ u=[p=huf q=tub]]]
|
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ fail |=(tub+nail [p=p.tub q=~]) :: never parse
|
2014-06-01 05:41:27 +04:00
|
|
|
++ full :: has to fully parse
|
2015-12-04 01:09:38 +03:00
|
|
|
|* sef=rule
|
2015-12-04 01:58:42 +03:00
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vex=(sef tub)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~(q.vex vex ?:(=(~ q.q.u.q.vex) vex [p=p.vex q=~]))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ funk :: add to tape first
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {pre+tape sef+rule}
|
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
(sef p.tub (weld pre q.tub))
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ here :: place-based apply
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %here
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {hez+__(|=({a+pint b+*} [a b])) sef+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-04 01:58:42 +03:00
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vex=(sef tub)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-09-29 00:21:18 +04:00
|
|
|
vex
|
|
|
|
[p=p.vex q=[~ u=[p=(hez [p.tub p.q.u.q.vex] p.u.q.vex) q=q.u.q.vex]]]
|
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ inde |* sef+rule :: indentation block
|
2014-06-18 14:01:17 +04:00
|
|
|
|= nail ^+ (sef)
|
|
|
|
=+ [har tap]=[p q]:+<
|
|
|
|
=+ lev=(fil 3 (dec q.har) ' ')
|
2014-08-08 22:18:09 +04:00
|
|
|
=+ eol=(just `@t`10)
|
|
|
|
=+ =- roq=((star ;~(pose prn ;~(sfix eol (jest lev)) -)) har tap)
|
|
|
|
;~(simu ;~(plug eol eol) eol)
|
2014-06-18 14:01:17 +04:00
|
|
|
?~ q.roq roq
|
2014-07-06 01:02:52 +04:00
|
|
|
=+ vex=(sef har(q 1) p.u.q.roq)
|
|
|
|
=+ fur=p.vex(q (add (dec q.har) q.p.vex))
|
|
|
|
?~ q.vex vex(p fur)
|
|
|
|
=- vex(p fur, u.q -)
|
|
|
|
:+ &3.vex
|
|
|
|
&4.vex(q.p (add (dec q.har) q.p.&4.vex))
|
2014-06-18 14:01:17 +04:00
|
|
|
=+ res=|4.vex
|
|
|
|
|- ?~ res |4.roq
|
|
|
|
?. =(10 -.res) [-.res $(res +.res)]
|
2014-07-06 01:02:52 +04:00
|
|
|
(welp [`@t`10 (trip lev)] $(res +.res))
|
2014-06-18 14:01:17 +04:00
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ jest :: match a cord
|
2015-12-04 01:58:42 +03:00
|
|
|
|= daf+@t
|
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ fad=daf
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- (like @t)
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 daf)
|
|
|
|
[p=p.tub q=[~ u=[p=fad q=tub]]]
|
2015-12-08 05:04:19 +03:00
|
|
|
?: |(?=($~ q.tub) !=((end 3 1 daf) i.q.tub))
|
2013-09-29 00:21:18 +04:00
|
|
|
(fail tub)
|
|
|
|
$(p.tub (lust i.q.tub p.tub), q.tub t.q.tub, daf (rsh 3 1 daf))
|
|
|
|
::
|
|
|
|
++ just :: XX redundant, jest
|
2014-06-01 05:41:27 +04:00
|
|
|
~/ %just :: match a char
|
2015-12-04 01:58:42 +03:00
|
|
|
|= daf+char
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-04 01:58:42 +03:00
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
^- (like char)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.tub
|
2013-12-09 01:23:03 +04:00
|
|
|
(fail tub)
|
2013-09-29 00:21:18 +04:00
|
|
|
?. =(daf i.q.tub)
|
|
|
|
(fail tub)
|
|
|
|
(next tub)
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ knee :: callbacks
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {gar+* sef+__(|.(*rule))}
|
|
|
|
|= tub+nail
|
2013-12-16 05:15:04 +04:00
|
|
|
^- (like ,_gar)
|
2013-09-29 00:21:18 +04:00
|
|
|
((sef) tub)
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ mask :: match char in set
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %mask
|
2015-12-04 01:58:42 +03:00
|
|
|
|= bud+(list char)
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-04 01:58:42 +03:00
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
^- (like char)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.tub
|
2013-12-09 01:23:03 +04:00
|
|
|
(fail tub)
|
2015-12-05 02:59:29 +03:00
|
|
|
?. (lien bud |=(a+char =(i.q.tub a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
(fail tub)
|
|
|
|
(next tub)
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ next :: consume a char
|
2015-12-04 01:58:42 +03:00
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
^- (like char)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.tub
|
2013-12-09 01:23:03 +04:00
|
|
|
(fail tub)
|
|
|
|
=+ zac=(lust i.q.tub p.tub)
|
2013-09-29 00:21:18 +04:00
|
|
|
[zac [~ i.q.tub [zac t.q.tub]]]
|
|
|
|
::
|
2014-06-07 05:09:44 +04:00
|
|
|
++ sear :: conditional cook
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {pyq+_+(* (unit)) sef+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
|= tub=nail
|
|
|
|
=+ vex=(sef tub)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-09-29 00:21:18 +04:00
|
|
|
vex
|
|
|
|
=+ gey=(pyq p.u.q.vex)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ gey
|
2013-09-29 00:21:18 +04:00
|
|
|
[p=p.vex q=~]
|
|
|
|
[p=p.vex q=[~ u=[p=u.gey q=q.u.q.vex]]]
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ shim :: match char in range
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %shim
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {les+@ mos+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-04 01:58:42 +03:00
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
^- (like char)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.tub
|
2013-12-09 01:23:03 +04:00
|
|
|
(fail tub)
|
2014-03-08 04:36:43 +04:00
|
|
|
?. ?&((gte i.q.tub les) (lte i.q.tub mos))
|
2013-09-29 00:21:18 +04:00
|
|
|
(fail tub)
|
|
|
|
(next tub)
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ stag :: add a label
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %stag
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {gob+* sef+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-04 01:58:42 +03:00
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vex=(sef tub)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-09-29 00:21:18 +04:00
|
|
|
vex
|
|
|
|
[p=p.vex q=[~ u=[p=[gob p.u.q.vex] q=q.u.q.vex]]]
|
|
|
|
::
|
2013-12-21 11:46:49 +04:00
|
|
|
++ stet
|
2015-12-04 01:58:42 +03:00
|
|
|
|* leh+(list {?(@ {@ @}) rule})
|
2014-04-07 21:16:57 +04:00
|
|
|
|-
|
|
|
|
?~ leh
|
|
|
|
~
|
2013-12-21 11:46:49 +04:00
|
|
|
[i=[p=-.i.leh q=+.i.leh] t=$(leh t.leh)]
|
|
|
|
::
|
2014-08-24 06:20:02 +04:00
|
|
|
++ stew :: switch by first char
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %stew
|
2015-12-04 01:58:42 +03:00
|
|
|
|* leh+(list {p+?(@ {@ @}) q+rule}) :: char/range keys
|
2014-08-24 06:20:02 +04:00
|
|
|
=+ ^= wor :: range complete lth
|
2015-12-05 02:59:29 +03:00
|
|
|
|= {ort+?(@ {@ @}) wan+?(@ {@ @})}
|
2013-09-29 00:21:18 +04:00
|
|
|
?@ ort
|
|
|
|
?@(wan (lth ort wan) (lth ort -.wan))
|
|
|
|
?@(wan (lth +.ort wan) (lth +.ort -.wan))
|
2014-08-24 06:20:02 +04:00
|
|
|
=+ ^= hel :: build parser map
|
2015-12-04 01:58:42 +03:00
|
|
|
=+ hel=`(tree __(?>(?=(^ leh) i.leh)))`~
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ hel
|
|
|
|
?~ leh
|
|
|
|
~
|
|
|
|
=+ yal=$(leh t.leh)
|
|
|
|
|- ^+ hel
|
|
|
|
?~ yal
|
|
|
|
[i.leh ~ ~]
|
|
|
|
?: (wor p.i.leh p.n.yal)
|
|
|
|
=+ nuc=$(yal l.yal)
|
|
|
|
?> ?=(^ nuc)
|
|
|
|
?: (vor p.n.yal p.n.nuc)
|
|
|
|
[n.yal nuc r.yal]
|
|
|
|
[n.nuc l.nuc [n.yal r.nuc r.yal]]
|
|
|
|
=+ nuc=$(yal r.yal)
|
|
|
|
?> ?=(^ nuc)
|
|
|
|
?: (vor p.n.yal p.n.nuc)
|
|
|
|
[n.yal l.yal nuc]
|
|
|
|
[n.nuc [n.yal l.yal l.nuc] r.nuc]
|
|
|
|
~% %fun ..^$ ~
|
2015-12-04 01:58:42 +03:00
|
|
|
|= tub+nail
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.tub
|
2013-09-29 00:21:18 +04:00
|
|
|
(fail tub)
|
|
|
|
|-
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ hel
|
2013-09-29 00:21:18 +04:00
|
|
|
(fail tub)
|
|
|
|
?: ?@ p.n.hel
|
|
|
|
=(p.n.hel i.q.tub)
|
|
|
|
?&((gte i.q.tub -.p.n.hel) (lte i.q.tub +.p.n.hel))
|
|
|
|
:: (q.n.hel [(lust i.q.tub p.tub) t.q.tub])
|
|
|
|
(q.n.hel tub)
|
|
|
|
?: (wor i.q.tub p.n.hel)
|
|
|
|
$(hel l.hel)
|
|
|
|
$(hel r.hel)
|
|
|
|
::
|
|
|
|
++ stir
|
|
|
|
~/ %stir
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {rud+* raq+__(|*({a+* b+*} [a b])) fel+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-04 01:58:42 +03:00
|
|
|
|= tub+nail
|
2014-10-17 01:12:16 +04:00
|
|
|
^- (like ,_rud)
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ vex=(fel tub)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2014-10-17 01:12:16 +04:00
|
|
|
[p.vex [~ rud tub]]
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ wag=$(tub q.u.q.vex)
|
|
|
|
?> ?=(^ q.wag)
|
|
|
|
[(last p.vex p.wag) [~ (raq p.u.q.vex p.u.q.wag) q.u.q.wag]]
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ stun :: parse several times
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {{les+@ mos+@} fel+rule}
|
|
|
|
|= tub+nail
|
|
|
|
^- (like (list __((wonk (fel)))))
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 mos)
|
|
|
|
[p.tub [~ ~ tub]]
|
|
|
|
=+ vex=(fel tub)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 les)
|
|
|
|
[p.vex [~ ~ tub]]
|
|
|
|
vex
|
|
|
|
=+ ^= wag %= $
|
|
|
|
les ?:(=(0 les) 0 (dec les))
|
|
|
|
mos ?:(=(0 mos) 0 (dec mos))
|
|
|
|
tub q.u.q.vex
|
|
|
|
==
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.wag
|
2013-09-29 00:21:18 +04:00
|
|
|
wag
|
|
|
|
[p.wag [~ [p.u.q.vex p.u.q.wag] q.u.q.wag]]
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eD, parsing (combinators) ::
|
|
|
|
::
|
2014-10-17 01:12:16 +04:00
|
|
|
++ bend :: conditional comp
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %bend
|
2015-12-04 01:58:42 +03:00
|
|
|
|* raq+__(|*({a+* b+*} [~ u=[a b]]))
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {vex+edge sab+rule}
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-12-09 01:23:03 +04:00
|
|
|
vex
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ yit=(sab q.u.q.vex)
|
|
|
|
=+ yur=(last p.vex p.yit)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.yit
|
2013-09-29 00:21:18 +04:00
|
|
|
[p=yur q=q.vex]
|
|
|
|
=+ vux=(raq p.u.q.vex p.u.q.yit)
|
|
|
|
?~ vux
|
|
|
|
[p=yur q=q.vex]
|
|
|
|
[p=yur q=[~ u=[p=u.vux q=q.u.q.yit]]]
|
|
|
|
::
|
|
|
|
++ comp
|
|
|
|
~/ %comp
|
2015-12-04 01:58:42 +03:00
|
|
|
|* raq+__(|*({a+* b+*} [a b])) :: arbitrary compose
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {vex+edge sab+rule}
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-09-29 00:21:18 +04:00
|
|
|
vex
|
|
|
|
=+ yit=(sab q.u.q.vex)
|
|
|
|
=+ yur=(last p.vex p.yit)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.yit
|
2013-09-29 00:21:18 +04:00
|
|
|
[p=yur q=q.yit]
|
|
|
|
[p=yur q=[~ u=[p=(raq p.u.q.vex p.u.q.yit) q=q.u.q.yit]]]
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ glue :: add rule
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %glue
|
2015-12-04 01:58:42 +03:00
|
|
|
|* bus+rule
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fun
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {vex+edge sab+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
(plug vex ;~(pfix bus sab))
|
|
|
|
::
|
2014-06-17 15:17:01 +04:00
|
|
|
++ less :: no first and second
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {vex+edge sab+rule}
|
2014-06-17 15:17:01 +04:00
|
|
|
?~ q.vex
|
|
|
|
=+ roq=(sab)
|
|
|
|
[p=(last p.vex p.roq) q=q.roq]
|
2015-10-03 00:58:03 +03:00
|
|
|
(fail +<.sab)
|
2014-06-17 15:17:01 +04:00
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ pfix :: discard first rule
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %pfix
|
2015-12-04 01:58:42 +03:00
|
|
|
(comp |*({a+* b+*} b))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ plug :: first then second
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %plug
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {vex+edge sab+rule}
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-09-29 00:21:18 +04:00
|
|
|
vex
|
|
|
|
=+ yit=(sab q.u.q.vex)
|
|
|
|
=+ yur=(last p.vex p.yit)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.yit
|
2013-09-29 00:21:18 +04:00
|
|
|
[p=yur q=q.yit]
|
|
|
|
[p=yur q=[~ u=[p=[p.u.q.vex p.u.q.yit] q=q.u.q.yit]]]
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ pose :: first or second
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %pose
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {vex+edge sab+rule}
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ roq=(sab)
|
|
|
|
[p=(last p.vex p.roq) q=q.roq]
|
|
|
|
vex
|
2015-12-04 01:58:42 +03:00
|
|
|
::
|
2014-06-17 15:17:01 +04:00
|
|
|
++ simu :: first and second
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {vex+edge sab+rule}
|
2014-06-17 15:17:01 +04:00
|
|
|
?~ q.vex
|
|
|
|
vex
|
|
|
|
=+ roq=(sab)
|
|
|
|
roq
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ sfix :: discard second rule
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %sfix
|
2015-12-04 01:58:42 +03:00
|
|
|
(comp |*({a+* b+*} a))
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eE, parsing (composers) ::
|
|
|
|
::
|
2014-10-17 01:12:16 +04:00
|
|
|
++ bass
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {wuc+@ tyd+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ cook
|
2015-12-05 02:59:29 +03:00
|
|
|
|= waq+(list @)
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ roll
|
|
|
|
waq
|
2015-12-08 04:46:28 +03:00
|
|
|
=|({p+@ q+@} |.((add p (mul wuc q))))
|
2013-09-29 00:21:18 +04:00
|
|
|
tyd
|
|
|
|
::
|
2014-10-17 01:12:16 +04:00
|
|
|
++ boss
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {wuc+@ tyd+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ cook
|
2015-12-05 02:59:29 +03:00
|
|
|
|= waq+(list @)
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ reel
|
|
|
|
waq
|
2015-12-08 04:46:28 +03:00
|
|
|
=|({p+@ q+@} |.((add p (mul wuc q))))
|
2013-09-29 00:21:18 +04:00
|
|
|
tyd
|
|
|
|
::
|
2015-05-09 04:08:18 +03:00
|
|
|
++ flag
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {sic+@t non+@t}
|
2015-05-09 04:08:18 +03:00
|
|
|
;~(pose (cold %& (jest sic)) (cold %| (jest non)))
|
|
|
|
::
|
2014-10-17 01:12:16 +04:00
|
|
|
++ ifix
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {fel+{p+rule q+rule} hof+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(pfix p.fel ;~(sfix hof q.fel))
|
|
|
|
::
|
2014-10-17 01:12:16 +04:00
|
|
|
++ more
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {bus+rule fel+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(pose (most bus fel) (easy ~))
|
|
|
|
::
|
2014-10-17 01:12:16 +04:00
|
|
|
++ most
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {bus+rule fel+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(plug fel (star ;~(pfix bus fel)))
|
|
|
|
::
|
2015-05-09 04:08:18 +03:00
|
|
|
++ pick
|
2015-12-04 01:58:42 +03:00
|
|
|
|* {a+rule b+rule}
|
2015-05-09 04:08:18 +03:00
|
|
|
;~ pose
|
|
|
|
(stag %& a)
|
|
|
|
(stag %| b)
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ plus |*(fel+rule ;~(plug fel (star fel)))
|
|
|
|
++ punt |*({a+rule} ;~(pose (stag ~ a) (easy ~)))
|
2014-10-17 01:12:16 +04:00
|
|
|
++ slug
|
2015-12-04 01:58:42 +03:00
|
|
|
|* raq+__(|*({a+* b+*} [a b]))
|
|
|
|
|* {bus+rule fel+rule}
|
2015-01-09 02:56:48 +03:00
|
|
|
;~((comp raq) fel (stir +<+.raq raq ;~(pfix bus fel)))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ star :: 0 or more times
|
2015-12-04 01:58:42 +03:00
|
|
|
|* fel+rule
|
2015-12-08 04:46:28 +03:00
|
|
|
(stir `(list __((wonk *fel)))`~ |*({a+* b+*} [a b]) fel)
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eF, parsing (ascii) ::
|
|
|
|
::
|
2014-11-18 13:49:03 +03:00
|
|
|
++ ace (just ' ')
|
2014-10-28 01:12:02 +03:00
|
|
|
++ bar (just '|')
|
|
|
|
++ bas (just '\\')
|
|
|
|
++ buc (just '$')
|
|
|
|
++ cab (just '_')
|
|
|
|
++ cen (just '%')
|
|
|
|
++ col (just ':')
|
|
|
|
++ com (just ',')
|
|
|
|
++ doq (just '"')
|
|
|
|
++ dot (just '.')
|
|
|
|
++ fas (just '/')
|
|
|
|
++ gal (just '<')
|
|
|
|
++ gar (just '>')
|
|
|
|
++ hax (just '#')
|
|
|
|
++ kel (just '{')
|
|
|
|
++ ker (just '}')
|
|
|
|
++ ket (just '^')
|
|
|
|
++ lus (just '+')
|
|
|
|
++ hep (just '-')
|
|
|
|
++ pel (just '(')
|
|
|
|
++ pam (just '&')
|
|
|
|
++ per (just ')')
|
|
|
|
++ pat (just '@')
|
|
|
|
++ sel (just '[')
|
|
|
|
++ sem (just ';')
|
|
|
|
++ ser (just ']')
|
|
|
|
++ sig (just '~')
|
|
|
|
++ soq (just '\'')
|
|
|
|
++ tar (just '*')
|
|
|
|
++ tec (just '`')
|
|
|
|
++ tis (just '=')
|
|
|
|
++ wut (just '?')
|
|
|
|
++ zap (just '!')
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eG, parsing (whitespace) ::
|
|
|
|
::
|
2014-10-21 02:18:01 +04:00
|
|
|
++ dog ;~(plug dot gay) :: . number separator
|
|
|
|
++ doh ;~(plug ;~(plug hep hep) gay) :: -- phon separator
|
2014-06-01 05:41:27 +04:00
|
|
|
++ dun (cold ~ ;~(plug hep hep)) :: -- (phep) to ~
|
|
|
|
++ duz (cold ~ ;~(plug tis tis)) :: == (stet) to ~
|
|
|
|
++ gah (mask [`@`10 ' ' ~]) :: newline or ace
|
2014-10-20 23:47:08 +04:00
|
|
|
++ gap (cold ~ ;~(plug gaq (star ;~(pose vul gah)))) :: plural space
|
2014-06-07 05:09:44 +04:00
|
|
|
++ gaq ;~ pose :: end of line
|
|
|
|
(just `@`10)
|
|
|
|
;~(plug gah ;~(pose gah vul))
|
2014-06-01 05:41:27 +04:00
|
|
|
vul
|
|
|
|
==
|
2014-07-22 02:14:52 +04:00
|
|
|
++ gaw (cold ~ (star ;~(pose vul gah))) :: classic white
|
2014-06-07 05:09:44 +04:00
|
|
|
++ gay ;~(pose gap (easy ~)) ::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ vul %- cold :- ~ :: comments
|
2014-05-16 01:29:11 +04:00
|
|
|
;~ plug col col
|
2014-06-17 15:17:01 +04:00
|
|
|
(star prn)
|
2014-05-16 01:29:11 +04:00
|
|
|
(just `@`10)
|
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eH, parsing (idioms) ::
|
|
|
|
::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ alf ;~(pose low hig) :: alphabetic
|
|
|
|
++ aln ;~(pose low hig nud) :: alphanumeric
|
|
|
|
++ alp ;~(pose low hig nud hep) :: alphanumeric and -
|
|
|
|
++ bet ;~(pose (cold 2 hep) (cold 3 lus)) :: axis syntax - +
|
2014-06-07 05:09:44 +04:00
|
|
|
++ bin (bass 2 (most gon but)) :: binary to atom
|
2015-12-05 02:59:29 +03:00
|
|
|
++ but (cook |=(a+@ (sub a '0')) (shim '0' '1')) :: binary digit
|
|
|
|
++ cit (cook |=(a+@ (sub a '0')) (shim '0' '7')) :: octal digit
|
2014-06-07 05:09:44 +04:00
|
|
|
++ dem (bass 10 (most gon dit)) :: decimal to atom
|
2015-12-05 02:59:29 +03:00
|
|
|
++ dit (cook |=(a+@ (sub a '0')) (shim '0' '9')) :: decimal digit
|
2014-06-01 05:41:27 +04:00
|
|
|
++ gul ;~(pose (cold 2 gal) (cold 3 gar)) :: axis syntax < >
|
|
|
|
++ gon ;~(pose ;~(plug bas gay fas) (easy ~)) :: long numbers \ /
|
|
|
|
++ hex (bass 16 (most gon hit)) :: hex to atom
|
|
|
|
++ hig (shim 'A' 'Z') :: uppercase
|
|
|
|
++ hit ;~ pose :: hex digits
|
2013-12-09 01:23:03 +04:00
|
|
|
dit
|
2015-12-05 02:59:29 +03:00
|
|
|
(cook |=(a+char (sub a 87)) (shim 'a' 'f'))
|
|
|
|
(cook |=(a+char (sub a 55)) (shim 'A' 'F'))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2014-06-01 05:41:27 +04:00
|
|
|
++ low (shim 'a' 'z') :: lowercase
|
|
|
|
++ mes %+ cook :: hexbyte
|
2015-12-04 01:58:42 +03:00
|
|
|
|=({a+@ b+@} (add (mul 16 a) b))
|
2014-06-01 05:41:27 +04:00
|
|
|
;~(plug hit hit)
|
2014-06-07 05:09:44 +04:00
|
|
|
++ nix (boss 256 (star ;~(pose aln cab))) ::
|
2014-06-01 05:41:27 +04:00
|
|
|
++ nud (shim '0' '9') :: numeric
|
2014-06-17 15:17:01 +04:00
|
|
|
++ prn ;~(less (just `@`127) (shim 32 256))
|
|
|
|
++ qat ;~ pose :: chars in blockcord
|
|
|
|
prn
|
|
|
|
;~(less ;~(plug (just `@`10) soqs) (just `@`10))
|
|
|
|
==
|
2014-06-01 05:41:27 +04:00
|
|
|
++ qit ;~ pose :: chars in a cord
|
2014-06-18 14:01:17 +04:00
|
|
|
;~(less bas soq prn)
|
|
|
|
;~(pfix bas ;~(pose bas soq mes)) :: escape chars
|
2014-06-01 05:41:27 +04:00
|
|
|
==
|
2014-11-01 02:45:09 +03:00
|
|
|
++ qut ;~ simu soq :: cord
|
|
|
|
;~ pose
|
2014-06-18 14:01:17 +04:00
|
|
|
;~ less soqs
|
|
|
|
(ifix [soq soq] (boss 256 (more gon qit)))
|
|
|
|
==
|
2014-11-01 02:45:09 +03:00
|
|
|
=+ hed=;~(pose ;~(plug (plus ace) vul) (just '\0a'))
|
2014-06-18 14:01:17 +04:00
|
|
|
%- inde %+ ifix
|
2014-11-01 02:45:09 +03:00
|
|
|
:- ;~(plug soqs hed)
|
2014-08-08 22:18:09 +04:00
|
|
|
;~(plug (just '\0a') soqs)
|
2014-06-18 14:01:17 +04:00
|
|
|
(boss 256 (star qat))
|
2014-11-01 02:45:09 +03:00
|
|
|
==
|
2014-06-01 05:41:27 +04:00
|
|
|
==
|
2014-06-18 14:01:17 +04:00
|
|
|
::
|
2014-10-21 02:18:01 +04:00
|
|
|
++ soqs ;~(plug soq soq soq) :: delimiting '''
|
|
|
|
++ sym :: symbol
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ cook
|
2015-12-05 02:59:29 +03:00
|
|
|
|=(a+tape (rap 3 ^-((list @) a)))
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(plug low (star ;~(pose nud low hep)))
|
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ ven ;~ (comp |=({a+@ b+@} (peg a b))) :: +>- axis syntax
|
2013-09-29 00:21:18 +04:00
|
|
|
bet
|
|
|
|
=+ hom=`?`|
|
2015-12-05 02:59:29 +03:00
|
|
|
|= tub+nail
|
2013-09-29 00:21:18 +04:00
|
|
|
^- (like axis)
|
|
|
|
=+ vex=?:(hom (bet tub) (gul tub))
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-12-09 01:23:03 +04:00
|
|
|
[p.tub [~ 1 tub]]
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ wag=$(p.tub p.vex, hom !hom, tub q.u.q.vex)
|
|
|
|
?> ?=(^ q.wag)
|
|
|
|
[p.wag [~ (peg p.u.q.vex p.u.q.wag) q.u.q.wag]]
|
2013-12-09 01:23:03 +04:00
|
|
|
==
|
2014-06-01 05:41:27 +04:00
|
|
|
++ vit :: base64 digit
|
2013-12-09 01:23:03 +04:00
|
|
|
;~ pose
|
2015-12-05 02:59:29 +03:00
|
|
|
(cook |=(a+@ (sub a 65)) (shim 'A' 'Z'))
|
|
|
|
(cook |=(a+@ (sub a 71)) (shim 'a' 'z'))
|
|
|
|
(cook |=(a+@ (add a 4)) (shim '0' '9'))
|
2013-09-29 00:21:18 +04:00
|
|
|
(cold 62 (just '-'))
|
|
|
|
(cold 63 (just '+'))
|
|
|
|
==
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eI, parsing (external) ::
|
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ rash |*({naf+@ sab+rule} (scan (trip naf) sab)) ::
|
|
|
|
++ rose |* {los+tape sab+rule}
|
2015-03-27 22:43:27 +03:00
|
|
|
=+ vex=(sab [[1 1] los])
|
2015-03-23 01:46:42 +03:00
|
|
|
=+ len=(lent los)
|
2015-03-27 22:43:27 +03:00
|
|
|
?. =(+(len) q.p.vex) [%| p=(dec q.p.vex)]
|
2015-02-25 19:57:43 +03:00
|
|
|
?~ q.vex
|
2015-03-27 22:43:27 +03:00
|
|
|
[%& p=~]
|
|
|
|
[%& p=[~ u=p.u.q.vex]]
|
2015-12-04 01:58:42 +03:00
|
|
|
++ rush |*({naf+@ sab+rule} (rust (trip naf) sab))
|
|
|
|
++ rust |* {los+tape sab+rule}
|
2014-04-21 21:22:16 +04:00
|
|
|
=+ vex=((full sab) [[1 1] los])
|
2013-09-29 00:21:18 +04:00
|
|
|
?~(q.vex ~ [~ u=p.u.q.vex])
|
2015-12-04 01:58:42 +03:00
|
|
|
++ scan |* {los+tape sab+rule}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vex=((full sab) [[1 1] los])
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2014-01-05 02:57:44 +04:00
|
|
|
~_ (show [%m '{%d %d}'] p.p.vex q.p.vex ~)
|
2014-01-04 11:28:16 +04:00
|
|
|
~|('syntax-error' !!)
|
2013-09-29 00:21:18 +04:00
|
|
|
p.u.q.vex
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eJ, formatting (basic text) ::
|
|
|
|
::
|
2014-06-12 21:03:34 +04:00
|
|
|
++ cass :: lowercase
|
2015-12-04 01:58:42 +03:00
|
|
|
|= vib+tape
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ rap 3
|
2015-12-05 02:59:29 +03:00
|
|
|
(turn vib |=(a+@ ?.(&((gte a 'A') (lte a 'Z')) a (add 32 a))))
|
2014-06-12 21:03:34 +04:00
|
|
|
::
|
2014-05-21 09:43:21 +04:00
|
|
|
++ cuss :: uppercase
|
2015-12-04 01:58:42 +03:00
|
|
|
|= vib+tape
|
2014-05-21 09:43:21 +04:00
|
|
|
^- @t
|
|
|
|
%+ rap 3
|
2015-12-05 02:59:29 +03:00
|
|
|
(turn vib |=(a+@ ?.(&((gte a 'a') (lte a 'z')) a (sub a 32))))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ crip |=(a+tape `@t`(rap 3 a)) :: tape to cord
|
2014-06-12 21:03:34 +04:00
|
|
|
::
|
|
|
|
++ mesc :: ctrl code escape
|
2015-12-04 01:58:42 +03:00
|
|
|
|= vib+tape
|
2013-09-29 00:21:18 +04:00
|
|
|
^- tape
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ vib
|
2013-09-29 00:21:18 +04:00
|
|
|
~
|
|
|
|
?: =('\\' i.vib)
|
|
|
|
['\\' '\\' $(vib t.vib)]
|
|
|
|
?: ?|((gth i.vib 126) (lth i.vib 32) =(39 i.vib))
|
2014-10-23 23:59:15 +04:00
|
|
|
['\\' (welp ~(rux at i.vib) '/' $(vib t.vib))]
|
2013-09-29 00:21:18 +04:00
|
|
|
[i.vib $(vib t.vib)]
|
|
|
|
::
|
2014-10-23 23:59:15 +04:00
|
|
|
++ runt :: prepend repeatedly
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {{a+@ b+@} c+tape}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- tape
|
|
|
|
?: =(0 a)
|
|
|
|
c
|
|
|
|
[b $(a (dec a))]
|
|
|
|
::
|
|
|
|
++ sand :: atom sanity
|
2015-12-05 02:59:29 +03:00
|
|
|
|= a+@ta
|
2014-10-29 23:59:01 +03:00
|
|
|
(flit (sane a))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2013-12-09 01:23:03 +04:00
|
|
|
++ sane :: atom sanity
|
2015-12-05 02:59:29 +03:00
|
|
|
|= a+@ta
|
|
|
|
|= b+@ ^- ?
|
2013-09-29 00:21:18 +04:00
|
|
|
?. =(%t (end 3 1 a))
|
|
|
|
~|(%sane-stub !!)
|
|
|
|
=+ [inx=0 len=(met 3 b)]
|
|
|
|
?: =(%tas a)
|
|
|
|
|- ^- ?
|
|
|
|
?: =(inx len) &
|
|
|
|
=+ cur=(cut 3 [inx 1] b)
|
|
|
|
?& ?| &((gte cur 'a') (lte cur 'z'))
|
|
|
|
&(=('-' cur) !=(0 inx) !=(len inx))
|
2014-05-15 03:58:43 +04:00
|
|
|
&(&((gte cur '0') (lte cur '9')) !=(0 inx))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
$(inx +(inx))
|
|
|
|
==
|
|
|
|
?: =(%ta a)
|
|
|
|
|- ^- ?
|
|
|
|
?: =(inx len) &
|
|
|
|
=+ cur=(cut 3 [inx 1] b)
|
2013-12-09 01:23:03 +04:00
|
|
|
?& ?| &((gte cur 'a') (lte cur 'z'))
|
2014-09-10 01:38:19 +04:00
|
|
|
&((gte cur '0') (lte cur '9'))
|
2013-09-29 00:21:18 +04:00
|
|
|
|(=('-' cur) =('~' cur) =('_' cur) =('.' cur))
|
|
|
|
==
|
|
|
|
$(inx +(inx))
|
|
|
|
==
|
|
|
|
|- ^- ?
|
|
|
|
?: =(0 b) &
|
|
|
|
=+ cur=(end 3 1 b)
|
|
|
|
?: &((lth cur 32) !=(10 cur)) |
|
|
|
|
=+ len=(teff cur)
|
|
|
|
?& |(=(1 len) =+(i=1 |-(|(=(i len) &((gte (cut 3 [i 1] b) 128) $(i +(i)))))))
|
|
|
|
$(b (rsh 3 len b))
|
|
|
|
==
|
|
|
|
::
|
2014-06-12 21:03:34 +04:00
|
|
|
++ trim :: tape split
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+@ b+tape}
|
|
|
|
^- {p+tape q+tape}
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ b
|
2013-09-29 00:21:18 +04:00
|
|
|
[~ ~]
|
|
|
|
?: =(0 a)
|
|
|
|
[~ b]
|
|
|
|
=+ c=$(a (dec a), b t.b)
|
|
|
|
[[i.b p.c] q.c]
|
|
|
|
::
|
2014-06-12 21:03:34 +04:00
|
|
|
++ trip :: cord to tape
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %trip
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@ ^- tape
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 (met 3 a))
|
|
|
|
~
|
|
|
|
[^-(@ta (end 3 1 a)) $(a (rsh 3 1 a))]
|
|
|
|
::
|
|
|
|
++ teff :: length utf8
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@t ^- @
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ b=(end 3 1 a)
|
2015-02-27 05:20:07 +03:00
|
|
|
~| %bad-utf8
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 b)
|
|
|
|
?>(=(0 a) 0)
|
|
|
|
?> |((gte b 32) =(10 b))
|
|
|
|
?:((lte b 127) 1 ?:((lte b 223) 2 ?:((lte b 239) 3 4)))
|
|
|
|
::
|
|
|
|
++ turf :: utf8 to utf32
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@t
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @c
|
|
|
|
%+ rap 5
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- (list @c)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ b=(teff a)
|
|
|
|
?: =(0 b) ~
|
|
|
|
:- %+ can 0
|
|
|
|
%+ turn
|
2015-12-04 01:58:42 +03:00
|
|
|
^- (list {p+@ q+@})
|
2013-09-29 00:21:18 +04:00
|
|
|
?+ b !!
|
|
|
|
1 [[0 7] ~]
|
|
|
|
2 [[8 6] [0 5] ~]
|
|
|
|
3 [[16 6] [8 6] [0 4] ~]
|
|
|
|
4 [[24 6] [16 6] [8 6] [0 3] ~]
|
|
|
|
==
|
2015-12-05 02:59:29 +03:00
|
|
|
|=({p+@ q+@} [q (cut 0 [p q] a)])
|
2013-09-29 00:21:18 +04:00
|
|
|
$(a (rsh 3 b a))
|
|
|
|
::
|
|
|
|
++ tuba :: utf8 to utf32 tape
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+tape
|
2015-12-04 18:16:34 +03:00
|
|
|
^- (list @c)
|
2013-09-29 00:21:18 +04:00
|
|
|
(rip 5 (turf (rap 3 a))) :: XX horrible
|
|
|
|
::
|
|
|
|
++ tufa :: utf32 to utf8 tape
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+(list @c)
|
2013-09-29 00:21:18 +04:00
|
|
|
^- tape
|
|
|
|
?~ a ""
|
|
|
|
(weld (rip 3 (tuft i.a)) $(a t.a))
|
|
|
|
::
|
|
|
|
++ tuft :: utf32 to utf8 text
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@c
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @t
|
|
|
|
%+ rap 3
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- (list @)
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 a)
|
|
|
|
~
|
|
|
|
=+ b=(end 5 1 a)
|
|
|
|
=+ c=$(a (rsh 5 1 a))
|
|
|
|
?: (lth b 0x7f)
|
|
|
|
[b c]
|
|
|
|
?: (lth b 0x7ff)
|
|
|
|
:* (mix 0b1100.0000 (cut 0 [6 5] b))
|
|
|
|
(mix 0b1000.0000 (end 0 6 b))
|
|
|
|
c
|
|
|
|
==
|
|
|
|
?: (lth b 0xffff)
|
|
|
|
:* (mix 0b1110.0000 (cut 0 [12 4] b))
|
|
|
|
(mix 0b1000.0000 (cut 0 [6 6] b))
|
|
|
|
(mix 0b1000.0000 (end 0 6 b))
|
|
|
|
c
|
|
|
|
==
|
|
|
|
:* (mix 0b1111.0000 (cut 0 [18 3] b))
|
|
|
|
(mix 0b1000.0000 (cut 0 [12 6] b))
|
|
|
|
(mix 0b1000.0000 (cut 0 [6 6] b))
|
|
|
|
(mix 0b1000.0000 (end 0 6 b))
|
|
|
|
c
|
|
|
|
==
|
|
|
|
::
|
2014-06-12 21:03:34 +04:00
|
|
|
++ wack :: span format
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@ta
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @ta
|
|
|
|
=+ b=(rip 3 a)
|
|
|
|
%+ rap 3
|
|
|
|
|- ^- tape
|
|
|
|
?~ b
|
|
|
|
~
|
|
|
|
?: =('~' i.b) ['~' '~' $(b t.b)]
|
|
|
|
?: =('_' i.b) ['~' '-' $(b t.b)]
|
|
|
|
[i.b $(b t.b)]
|
|
|
|
::
|
2014-06-12 21:03:34 +04:00
|
|
|
++ wick :: span format
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@
|
|
|
|
^- (unit @ta)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ b=(rip 3 a)
|
2015-01-14 08:38:39 +03:00
|
|
|
=- ?^(b ~ (some (rap 3 (flop c))))
|
|
|
|
=| c=tape
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- {b+tape c+tape}
|
2015-01-14 08:38:39 +03:00
|
|
|
?~ b [~ c]
|
|
|
|
?. =('~' i.b)
|
|
|
|
$(b t.b, c [i.b c])
|
|
|
|
?~ t.b [b ~]
|
|
|
|
?- i.t.b
|
2015-12-08 04:23:27 +03:00
|
|
|
$'~' $(b t.t.b, c ['~' c])
|
|
|
|
$'-' $(b t.t.b, c ['_' c])
|
2015-01-14 08:38:39 +03:00
|
|
|
@ [b ~]
|
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-10-24 01:08:11 +04:00
|
|
|
++ woad :: cord format
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@ta
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @t
|
|
|
|
%+ rap 3
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- (list @)
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 a)
|
|
|
|
~
|
|
|
|
=+ b=(end 3 1 a)
|
|
|
|
=+ c=(rsh 3 1 a)
|
|
|
|
?: =('.' b)
|
2013-12-09 01:23:03 +04:00
|
|
|
[' ' $(a c)]
|
2013-09-29 00:21:18 +04:00
|
|
|
?. =('~' b)
|
2013-12-09 01:23:03 +04:00
|
|
|
[b $(a c)]
|
2013-09-29 00:21:18 +04:00
|
|
|
=> .(b (end 3 1 c), c (rsh 3 1 c))
|
|
|
|
?+ b =- (weld (rip 3 (tuft p.d)) $(a q.d))
|
|
|
|
^= d
|
|
|
|
=+ d=0
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- {p+@ q+@}
|
2013-12-08 06:55:03 +04:00
|
|
|
?: =('.' b)
|
|
|
|
[d c]
|
2013-09-29 00:21:18 +04:00
|
|
|
?< =(0 c)
|
|
|
|
%= $
|
2013-12-08 06:55:03 +04:00
|
|
|
b (end 3 1 c)
|
|
|
|
c (rsh 3 1 c)
|
|
|
|
d %+ add (mul 16 d)
|
|
|
|
%+ sub b
|
|
|
|
?: &((gte b '0') (lte b '9')) 48
|
|
|
|
?>(&((gte b 'a') (lte b 'z')) 87)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2015-12-08 04:23:27 +03:00
|
|
|
$'.' ['.' $(a c)]
|
|
|
|
$'~' ['~' $(a c)]
|
2013-12-09 01:23:03 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-10-24 01:08:11 +04:00
|
|
|
++ wood :: cord format
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+@t
|
2013-09-29 00:21:18 +04:00
|
|
|
^- @ta
|
|
|
|
%+ rap 3
|
2015-12-04 01:58:42 +03:00
|
|
|
|- ^- (list @)
|
2013-12-09 01:23:03 +04:00
|
|
|
?: =(0 a)
|
2013-09-29 00:21:18 +04:00
|
|
|
~
|
|
|
|
=+ b=(teff a)
|
|
|
|
=+ c=(turf (end 3 b a))
|
|
|
|
=+ d=$(a (rsh 3 b a))
|
2013-12-09 01:23:03 +04:00
|
|
|
?: ?| &((gte c 'a') (lte c 'z'))
|
2013-09-29 00:21:18 +04:00
|
|
|
&((gte c '0') (lte c '9'))
|
|
|
|
=('-' c)
|
|
|
|
==
|
|
|
|
[c d]
|
2014-04-07 21:16:57 +04:00
|
|
|
?+ c
|
2013-12-15 10:46:41 +04:00
|
|
|
:- '~'
|
|
|
|
=+ e=(met 2 c)
|
|
|
|
|- ^- tape
|
2015-01-14 08:57:55 +03:00
|
|
|
?: =(0 e)
|
2013-12-15 10:46:41 +04:00
|
|
|
['.' d]
|
|
|
|
=. e (dec e)
|
|
|
|
=+ f=(rsh 2 e c)
|
|
|
|
[(add ?:((lte f 9) 48 87) f) $(c (end 2 e c))]
|
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$' ' ['.' d]
|
|
|
|
$'.' ['~' '.' d]
|
|
|
|
$'~' ['~' '~' d]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eK, formatting (layout) ::
|
|
|
|
::
|
|
|
|
++ re
|
2015-12-04 01:58:42 +03:00
|
|
|
|_ tac+tank
|
2013-09-29 00:21:18 +04:00
|
|
|
++ ram
|
|
|
|
^- tape
|
|
|
|
?- -.tac
|
2015-12-08 04:23:27 +03:00
|
|
|
$leaf p.tac
|
|
|
|
$palm ram(tac [%rose [p.p.tac (weld q.p.tac r.p.tac) s.p.tac] q.tac])
|
|
|
|
$rose
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ weld
|
|
|
|
q.p.tac
|
|
|
|
|- ^- tape
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.tac
|
2013-09-29 00:21:18 +04:00
|
|
|
r.p.tac
|
|
|
|
=+ voz=$(q.tac t.q.tac)
|
2014-06-07 05:09:44 +04:00
|
|
|
(weld ram(tac i.q.tac) ?~(t.q.tac voz (weld p.p.tac voz)))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ win
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {tab+@ edg+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ lug=`wall`~
|
|
|
|
|^ |- ^- wall
|
|
|
|
?- -.tac
|
2015-12-08 04:23:27 +03:00
|
|
|
$leaf (rig p.tac)
|
|
|
|
$palm
|
2013-09-29 00:21:18 +04:00
|
|
|
?: fit
|
|
|
|
(rig ram)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.tac
|
2013-09-29 00:21:18 +04:00
|
|
|
(rig q.p.tac)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ t.q.tac
|
2013-09-29 00:21:18 +04:00
|
|
|
(rig(tab (add 2 tab), lug $(tac i.q.tac)) q.p.tac)
|
|
|
|
=> .(q.tac `(list tank)`q.tac)
|
|
|
|
=+ lyn=(mul 2 (lent q.tac))
|
|
|
|
=+ ^= qyr
|
|
|
|
|- ^- wall
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.tac
|
2013-09-29 00:21:18 +04:00
|
|
|
lug
|
|
|
|
%= ^$
|
2014-01-04 11:28:16 +04:00
|
|
|
tac i.q.tac
|
|
|
|
tab (add tab (sub lyn 2))
|
|
|
|
lug $(q.tac t.q.tac, lyn (sub lyn 2))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
(wig(lug qyr) q.p.tac)
|
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$rose
|
2013-09-29 00:21:18 +04:00
|
|
|
?: fit
|
|
|
|
(rig ram)
|
2015-01-10 00:02:47 +03:00
|
|
|
=. lug
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- wall
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.tac
|
2013-09-29 00:21:18 +04:00
|
|
|
?:(=(%$ r.p.tac) lug (rig r.p.tac))
|
|
|
|
^$(tac i.q.tac, lug $(q.tac t.q.tac), tab din)
|
|
|
|
?: =(%$ q.p.tac)
|
2015-01-10 00:02:47 +03:00
|
|
|
lug
|
|
|
|
(wig q.p.tac)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ din (mod (add 2 tab) (mul 2 (div edg 3)))
|
|
|
|
++ fit (lte (lent ram) (sub edg tab))
|
|
|
|
++ rig
|
2015-12-04 01:58:42 +03:00
|
|
|
|= hom+tape
|
2013-09-29 00:21:18 +04:00
|
|
|
^- wall
|
|
|
|
?: (lte (lent hom) (sub edg tab))
|
|
|
|
[(runt [tab ' '] hom) lug]
|
|
|
|
=> .(tab (add tab 2), edg (sub edg 2))
|
|
|
|
=+ mut=(trim (sub edg tab) hom)
|
|
|
|
:- (runt [(sub tab 2) ' '] ['\\' '/' (weld p.mut `_hom`['\\' '/' ~])])
|
|
|
|
=> .(hom q.mut)
|
|
|
|
|-
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ hom
|
2013-12-09 01:23:03 +04:00
|
|
|
:- %+ runt
|
|
|
|
[(sub tab 2) ' ']
|
2013-09-29 00:21:18 +04:00
|
|
|
['\\' '/' (runt [(sub edg tab) ' '] ['\\' '/' ~])]
|
|
|
|
lug
|
|
|
|
=> .(mut (trim (sub edg tab) hom))
|
|
|
|
[(runt [tab ' '] p.mut) $(hom q.mut)]
|
|
|
|
::
|
|
|
|
++ wig
|
2015-12-04 01:58:42 +03:00
|
|
|
|= hom+tape
|
2013-09-29 00:21:18 +04:00
|
|
|
^- wall
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ lug
|
2013-09-29 00:21:18 +04:00
|
|
|
(rig hom)
|
|
|
|
=+ lin=(lent hom)
|
|
|
|
=+ wug=:(add 1 tab lin)
|
2013-12-09 01:23:03 +04:00
|
|
|
?. =+ mir=i.lug
|
2014-06-07 05:09:44 +04:00
|
|
|
|- ?~ mir
|
2013-09-29 00:21:18 +04:00
|
|
|
|
|
|
|
|
?|(=(0 wug) ?&(=(' ' i.mir) $(mir t.mir, wug (dec wug))))
|
2014-06-07 05:09:44 +04:00
|
|
|
(rig hom) :: ^ XX regular form?
|
2013-09-29 00:21:18 +04:00
|
|
|
[(runt [tab ' '] (weld hom `tape`[' ' (slag wug i.lug)])) t.lug]
|
|
|
|
--
|
|
|
|
--
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eL, formatting (path) ::
|
|
|
|
::
|
2013-12-09 01:23:03 +04:00
|
|
|
++ ab
|
2013-09-29 00:21:18 +04:00
|
|
|
|%
|
|
|
|
++ bix (bass 16 (stun [2 2] six))
|
2015-12-05 02:59:29 +03:00
|
|
|
++ fem (sear |=(a+@ (cha:fa a)) aln)
|
2013-09-29 00:21:18 +04:00
|
|
|
++ hif (boss 256 ;~(plug tip tiq (easy ~)))
|
2013-12-09 01:23:03 +04:00
|
|
|
++ huf %+ cook
|
2015-12-04 01:58:42 +03:00
|
|
|
|=({a+@ b+@} (wred:un ~(zug mu ~(zag mu [a b]))))
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(plug hif ;~(pfix hep hif))
|
|
|
|
++ hyf (bass 0x1.0000.0000 ;~(plug huf ;~(pfix hep huf) (easy ~)))
|
|
|
|
++ pev (bass 32 ;~(plug sev (stun [0 4] siv)))
|
|
|
|
++ pew (bass 64 ;~(plug sew (stun [0 4] siw)))
|
|
|
|
++ piv (bass 32 (stun [5 5] siv))
|
|
|
|
++ piw (bass 64 (stun [5 5] siw))
|
|
|
|
++ qeb (bass 2 ;~(plug seb (stun [0 3] sib)))
|
|
|
|
++ qex (bass 16 ;~(plug sex (stun [0 3] hit)))
|
|
|
|
++ qib (bass 2 (stun [4 4] sib))
|
|
|
|
++ qix (bass 16 (stun [4 4] six))
|
|
|
|
++ seb (cold 1 (just '1'))
|
2015-12-05 02:59:29 +03:00
|
|
|
++ sed (cook |=(a+@ (sub a '0')) (shim '1' '9'))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ sev ;~(pose sed sov)
|
|
|
|
++ sew ;~(pose sed sow)
|
|
|
|
++ sex ;~(pose sed sox)
|
2015-12-05 02:59:29 +03:00
|
|
|
++ sib (cook |=(a+@ (sub a '0')) (shim '0' '1'))
|
|
|
|
++ sid (cook |=(a+@ (sub a '0')) (shim '0' '9'))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ siv ;~(pose sid sov)
|
|
|
|
++ siw ;~(pose sid sow)
|
|
|
|
++ six ;~(pose sid sox)
|
2015-12-05 02:59:29 +03:00
|
|
|
++ sov (cook |=(a+@ (sub a 87)) (shim 'a' 'v'))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ sow ;~ pose
|
2015-12-05 02:59:29 +03:00
|
|
|
(cook |=(a+@ (sub a 87)) (shim 'a' 'z'))
|
|
|
|
(cook |=(a+@ (sub a 29)) (shim 'A' 'Z'))
|
2013-09-29 00:21:18 +04:00
|
|
|
(cold 62 (just '-'))
|
|
|
|
(cold 63 (just '~'))
|
|
|
|
==
|
2015-12-05 02:59:29 +03:00
|
|
|
++ sox (cook |=(a+@ (sub a 87)) (shim 'a' 'f'))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ ted (bass 10 ;~(plug sed (stun [0 2] sid)))
|
2015-12-05 02:59:29 +03:00
|
|
|
++ tip (sear |=(a+@ (ins:po a)) til)
|
|
|
|
++ tiq (sear |=(a+@ (ind:po a)) til)
|
2013-09-29 00:21:18 +04:00
|
|
|
++ tid (bass 10 (stun [3 3] sid))
|
|
|
|
++ til (boss 256 (stun [3 3] low))
|
|
|
|
++ urs %+ cook
|
2015-12-04 01:58:42 +03:00
|
|
|
|=(a+tape (rap 3 ^-((list @) a)))
|
2014-04-07 21:16:57 +04:00
|
|
|
(star ;~(pose nud low hep dot sig cab))
|
2014-03-20 05:05:42 +04:00
|
|
|
++ urt %+ cook
|
2015-12-04 01:58:42 +03:00
|
|
|
|=(a+tape (rap 3 ^-((list @) a)))
|
2014-04-07 21:16:57 +04:00
|
|
|
(star ;~(pose nud low hep dot sig))
|
2015-06-26 02:02:29 +03:00
|
|
|
++ urx %+ cook
|
2015-12-04 01:58:42 +03:00
|
|
|
|=(a+tape (rap 3 ^-((list @) a)))
|
2015-06-26 02:02:29 +03:00
|
|
|
%- star
|
|
|
|
;~ pose
|
|
|
|
nud
|
|
|
|
low
|
|
|
|
hep
|
|
|
|
cab
|
|
|
|
(cold ' ' dot)
|
|
|
|
(cook tuft (ifix [sig dot] hex))
|
2015-07-16 01:11:45 +03:00
|
|
|
;~(pfix sig ;~(pose sig dot))
|
2015-06-26 02:02:29 +03:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
++ voy ;~(pfix bas ;~(pose bas soq bix))
|
|
|
|
--
|
|
|
|
++ ag
|
|
|
|
|%
|
2015-12-04 01:58:42 +03:00
|
|
|
++ ape |*(fel+rule ;~(pose (cold 0 (just '0')) fel))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ bay (ape (bass 16 ;~(plug qeb:ab (star ;~(pfix dog qib:ab)))))
|
2013-12-09 02:40:16 +04:00
|
|
|
++ bip =+ tod=(ape qex:ab)
|
|
|
|
(bass 0x1.0000 ;~(plug tod (stun [7 7] ;~(pfix dog tod))))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ dem (ape (bass 1.000 ;~(plug ted:ab (star ;~(pfix dog tid:ab)))))
|
|
|
|
++ dim (ape (bass 10 ;~(plug sed:ab (star sid:ab))))
|
|
|
|
++ dum (bass 10 (plus sid:ab))
|
|
|
|
++ fed ;~ pose
|
2015-03-13 02:48:24 +03:00
|
|
|
%+ bass 0x1.0000.0000.0000.0000
|
|
|
|
;~((glue doh) ;~(pose hyf:ab huf:ab) (more doh hyf:ab))
|
|
|
|
::
|
|
|
|
hyf:ab
|
2013-09-29 00:21:18 +04:00
|
|
|
huf:ab
|
|
|
|
hif:ab
|
|
|
|
tiq:ab
|
|
|
|
==
|
2015-02-25 05:08:20 +03:00
|
|
|
++ fim (sear den:fa (bass 58 (plus fem:ab)))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ hex (ape (bass 0x1.0000 ;~(plug qex:ab (star ;~(pfix dog qix:ab)))))
|
2013-12-09 01:23:03 +04:00
|
|
|
++ lip =+ tod=(ape ted:ab)
|
2013-09-29 00:21:18 +04:00
|
|
|
(bass 256 ;~(plug tod (stun [3 3] ;~(pfix dog tod))))
|
|
|
|
++ viz (ape (bass 0x200.0000 ;~(plug pev:ab (star ;~(pfix dog piv:ab)))))
|
2014-03-20 05:05:42 +04:00
|
|
|
++ vum (bass 32 (plus siv:ab))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ wiz (ape (bass 0x4000.0000 ;~(plug pew:ab (star ;~(pfix dog piw:ab)))))
|
|
|
|
--
|
|
|
|
::
|
|
|
|
++ co
|
2015-02-21 00:42:57 +03:00
|
|
|
~% %co ..co ~
|
2013-09-29 00:21:18 +04:00
|
|
|
=< |_ lot=coin
|
2015-12-04 01:58:42 +03:00
|
|
|
++ rear |=(rom+tape =>(.(rex rom) rend))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ rent `@ta`(rap 3 rend)
|
|
|
|
++ rend
|
|
|
|
^- tape
|
2015-12-08 04:23:27 +03:00
|
|
|
?: ?=($blob -.lot)
|
2014-03-20 05:05:42 +04:00
|
|
|
['~' '0' ((v-co 1) (jam p.lot))]
|
2015-12-08 04:23:27 +03:00
|
|
|
?: ?=($many -.lot)
|
2014-01-04 11:28:16 +04:00
|
|
|
:- '.'
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- tape
|
|
|
|
?~ p.lot
|
|
|
|
['_' '_' rex]
|
2014-03-20 05:05:42 +04:00
|
|
|
['_' (weld (trip (wack rent(lot i.p.lot))) $(p.lot t.p.lot))]
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ [yed=(end 3 1 p.p.lot) hay=(cut 3 [1 1] p.p.lot)]
|
|
|
|
|- ^- tape
|
|
|
|
?+ yed (z-co q.p.lot)
|
2015-12-08 04:23:27 +03:00
|
|
|
$c ['~' '-' (weld (rip 3 (wood (tuft q.p.lot))) rex)]
|
|
|
|
$d
|
2013-09-29 00:21:18 +04:00
|
|
|
?+ hay (z-co q.p.lot)
|
2015-12-08 04:23:27 +03:00
|
|
|
$a
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ yod=(yore q.p.lot)
|
|
|
|
=> ^+(. .(rex ?~(f.t.yod rex ['.' (s-co f.t.yod)])))
|
|
|
|
=> ^+ .
|
|
|
|
%= .
|
|
|
|
rex
|
|
|
|
?: &(=(~ f.t.yod) =(0 h.t.yod) =(0 m.t.yod) =(0 s.t.yod))
|
|
|
|
rex
|
|
|
|
=> .(rex ['.' (y-co s.t.yod)])
|
|
|
|
=> .(rex ['.' (y-co m.t.yod)])
|
|
|
|
['.' '.' (y-co h.t.yod)]
|
|
|
|
==
|
|
|
|
=> .(rex ['.' (a-co d.t.yod)])
|
|
|
|
=> .(rex ['.' (a-co m.yod)])
|
|
|
|
=> .(rex ?:(a.yod rex ['-' rex]))
|
|
|
|
['~' (a-co y.yod)]
|
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$r
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ yug=(yell q.p.lot)
|
|
|
|
=> ^+(. .(rex ?~(f.yug rex ['.' (s-co f.yug)])))
|
|
|
|
:- '~'
|
|
|
|
?: &(=(0 d.yug) =(0 m.yug) =(0 h.yug) =(0 s.yug))
|
2015-01-14 08:38:39 +03:00
|
|
|
['s' '0' rex]
|
2013-09-29 00:21:18 +04:00
|
|
|
=> ^+(. ?:(=(0 s.yug) . .(rex ['.' 's' (a-co s.yug)])))
|
|
|
|
=> ^+(. ?:(=(0 m.yug) . .(rex ['.' 'm' (a-co m.yug)])))
|
|
|
|
=> ^+(. ?:(=(0 h.yug) . .(rex ['.' 'h' (a-co h.yug)])))
|
|
|
|
=> ^+(. ?:(=(0 d.yug) . .(rex ['.' 'd' (a-co d.yug)])))
|
|
|
|
+.rex
|
|
|
|
==
|
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$f
|
2013-12-09 01:23:03 +04:00
|
|
|
?: =(& q.p.lot)
|
|
|
|
['.' 'y' rex]
|
2013-09-29 00:21:18 +04:00
|
|
|
?:(=(| q.p.lot) ['.' 'n' rex] (z-co q.p.lot))
|
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$n ['~' rex]
|
|
|
|
$i
|
2013-09-29 00:21:18 +04:00
|
|
|
?+ hay (z-co q.p.lot)
|
2015-12-08 04:23:27 +03:00
|
|
|
$f ((ro-co [3 10 4] |=(a+@ ~(d ne a))) q.p.lot)
|
|
|
|
$s ((ro-co [4 16 8] |=(a+@ ~(x ne a))) q.p.lot)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$p
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ dyx=(met 3 q.p.lot)
|
|
|
|
:- '~'
|
|
|
|
?: (lte dyx 1)
|
|
|
|
(weld (trip (tod:po q.p.lot)) rex)
|
|
|
|
?: =(2 dyx)
|
2013-12-09 01:23:03 +04:00
|
|
|
;: weld
|
2013-09-29 00:21:18 +04:00
|
|
|
(trip (tos:po (end 3 1 q.p.lot)))
|
|
|
|
(trip (tod:po (rsh 3 1 q.p.lot)))
|
|
|
|
rex
|
|
|
|
==
|
2015-03-13 02:48:24 +03:00
|
|
|
=+ [dyz=(met 5 q.p.lot) fin=| dub=&]
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- tape
|
|
|
|
?: =(0 dyz)
|
|
|
|
rex
|
|
|
|
%= $
|
|
|
|
fin &
|
2015-03-13 02:48:24 +03:00
|
|
|
dub !dub
|
2013-09-29 00:21:18 +04:00
|
|
|
dyz (dec dyz)
|
|
|
|
q.p.lot (rsh 5 1 q.p.lot)
|
|
|
|
rex
|
|
|
|
=+ syb=(wren:un (end 5 1 q.p.lot))
|
|
|
|
=+ cog=~(zig mu [(rsh 4 1 syb) (end 4 1 syb)])
|
|
|
|
;: weld
|
|
|
|
(trip (tos:po (end 3 1 p.cog)))
|
|
|
|
(trip (tod:po (rsh 3 1 p.cog)))
|
|
|
|
`tape`['-' ~]
|
|
|
|
(trip (tos:po (end 3 1 q.cog)))
|
|
|
|
(trip (tod:po (rsh 3 1 q.cog)))
|
2015-03-13 02:48:24 +03:00
|
|
|
`tape`?.(fin ~ ['-' ?.(dub ~ ['-' ~])])
|
2013-09-29 00:21:18 +04:00
|
|
|
rex
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$r
|
2013-09-29 00:21:18 +04:00
|
|
|
?+ hay (z-co q.p.lot)
|
2015-12-08 04:23:27 +03:00
|
|
|
$d ['.' '~' (r-co (rlyd q.p.lot))]
|
|
|
|
$h ['.' '~' '~' (r-co (rlyh q.p.lot))]
|
|
|
|
$q ['.' '~' '~' '~' (r-co (rlyq q.p.lot))]
|
|
|
|
$s ['.' (r-co (rlys q.p.lot))]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$u
|
|
|
|
?: ?=($c hay)
|
2015-03-03 04:51:00 +03:00
|
|
|
%+ welp ['0' 'c' (reap (pad:fa q.p.lot) '1')]
|
|
|
|
(c-co (enc:fa q.p.lot))
|
2013-09-29 00:21:18 +04:00
|
|
|
=- (weld p.gam ?:(=(0 q.p.lot) `tape`['0' ~] q.gam))
|
2015-12-04 01:58:42 +03:00
|
|
|
^= gam ^- {p+tape q+tape}
|
2015-12-05 02:59:29 +03:00
|
|
|
?+ hay [~ ((ox-co [10 3] |=(a+@ ~(d ne a))) q.p.lot)]
|
2015-12-08 04:23:27 +03:00
|
|
|
$b [['0' 'b' ~] ((ox-co [2 4] |=(a+@ ~(d ne a))) q.p.lot)]
|
|
|
|
$i [['0' 'i' ~] ((d-co 1) q.p.lot)]
|
|
|
|
$x [['0' 'x' ~] ((ox-co [16 4] |=(a+@ ~(x ne a))) q.p.lot)]
|
|
|
|
$v [['0' 'v' ~] ((ox-co [32 5] |=(a+@ ~(x ne a))) q.p.lot)]
|
|
|
|
$w [['0' 'w' ~] ((ox-co [64 5] |=(a+@ ~(w ne a))) q.p.lot)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$s
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ weld
|
|
|
|
?:((syn:si q.p.lot) "--" "-")
|
|
|
|
$(yed 'u', q.p.lot (abs:si q.p.lot))
|
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$t
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =('a' hay)
|
|
|
|
?: =('s' (cut 3 [2 1] p.p.lot))
|
|
|
|
(weld (rip 3 q.p.lot) rex)
|
2014-03-20 05:05:42 +04:00
|
|
|
['~' '.' (weld (rip 3 q.p.lot) rex)]
|
2013-09-29 00:21:18 +04:00
|
|
|
['~' '~' (weld (rip 3 (wood q.p.lot)) rex)]
|
|
|
|
==
|
|
|
|
--
|
|
|
|
=+ rex=*tape
|
|
|
|
=< |%
|
2015-12-04 01:58:42 +03:00
|
|
|
++ a-co |=(dat+@ ((d-co 1) dat))
|
2015-12-08 04:46:28 +03:00
|
|
|
++ c-co (em-co [58 1] |=({? b+@ c+tape} [~(c ne b) c]))
|
2015-12-04 01:58:42 +03:00
|
|
|
++ d-co |=(min+@ (em-co [10 min] |=({? b+@ c+tape} [~(d ne b) c])))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ r-co
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+dn
|
2015-12-08 04:23:27 +03:00
|
|
|
?: ?=({$i *} a) (weld ?:(s.a "inf" "-inf") rex)
|
|
|
|
?: ?=({$n *} a) (weld "nan" rex)
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ ^= e %+ ed-co [10 1]
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {a+? b+@ c+tape}
|
2015-07-12 20:26:23 +03:00
|
|
|
?: a [~(d ne b) '.' c]
|
|
|
|
[~(d ne b) c]
|
|
|
|
=+ ^= f
|
|
|
|
=>(.(rex ~) (e a.a))
|
2015-07-13 02:45:49 +03:00
|
|
|
=. e.a (sum:si e.a (sun:si (dec +.f)))
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ b=?:((syn:si e.a) "e" "e-")
|
2015-07-13 02:45:49 +03:00
|
|
|
=> .(rex ?~(e.a rex (weld b ((d-co 1) (abs:si e.a)))))
|
2015-07-12 20:26:23 +03:00
|
|
|
=> .(rex (weld -.f rex))
|
|
|
|
?:(s.a rex ['-' rex])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ s-co
|
2015-12-04 01:58:42 +03:00
|
|
|
|= esc+(list @) ^- tape
|
2013-09-29 00:21:18 +04:00
|
|
|
~| [%so-co esc]
|
|
|
|
?~ esc
|
|
|
|
rex
|
|
|
|
:- '.'
|
|
|
|
=>(.(rex $(esc t.esc)) ((x-co 4) i.esc))
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2015-12-04 01:58:42 +03:00
|
|
|
++ v-co |=(min=@ (em-co [32 min] |=({? b+@ c+tape} [~(v ne b) c])))
|
|
|
|
++ w-co |=(min=@ (em-co [64 min] |=({? b+@ c+tape} [~(w ne b) c])))
|
|
|
|
++ x-co |=(min=@ (em-co [16 min] |=({? b+@ c+tape} [~(x ne b) c])))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ y-co |=(dat=@ ((d-co 2) dat))
|
|
|
|
++ z-co |=(dat=@ `tape`['0' 'x' ((x-co 1) dat)])
|
|
|
|
--
|
2013-12-09 01:23:03 +04:00
|
|
|
|%
|
2013-09-29 00:21:18 +04:00
|
|
|
++ em-co
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {{bas+@ min+@} par+_+({? @ tape} tape)}
|
2013-09-29 00:21:18 +04:00
|
|
|
|= hol=@
|
|
|
|
^- tape
|
|
|
|
?: &(=(0 hol) =(0 min))
|
|
|
|
rex
|
|
|
|
=+ [rad=(mod hol bas) dar=(div hol bas)]
|
|
|
|
%= $
|
|
|
|
min ?:(=(0 min) 0 (dec min))
|
|
|
|
hol dar
|
|
|
|
rex (par =(0 dar) rad rex)
|
|
|
|
==
|
|
|
|
::
|
2015-07-12 20:26:23 +03:00
|
|
|
++ ed-co
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {{bas+@ min+@} par+_+({? @ tape} tape)}
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ [fir=& cou=0]
|
|
|
|
|= hol=@
|
2015-12-04 01:58:42 +03:00
|
|
|
^- {tape @}
|
2015-07-12 20:26:23 +03:00
|
|
|
?: &(=(0 hol) =(0 min))
|
2015-07-13 02:45:49 +03:00
|
|
|
[rex cou]
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ [rad=(mod hol bas) dar=(div hol bas)]
|
|
|
|
%= $
|
|
|
|
min ?:(=(0 min) 0 (dec min))
|
|
|
|
hol dar
|
|
|
|
rex (par &(=(0 dar) !fir) rad rex)
|
|
|
|
fir |
|
|
|
|
cou +(cou)
|
|
|
|
==
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ ox-co
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {{bas+@ gop+@} dug+_+(@ @)}
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ em-co
|
|
|
|
[|-(?:(=(0 gop) 1 (mul bas $(gop (dec gop))))) 0]
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {top+? seg+@ res+tape}
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ weld
|
|
|
|
?:(top ~ `tape`['.' ~])
|
|
|
|
%. seg
|
|
|
|
%+ em-co(rex res)
|
2013-12-09 01:23:03 +04:00
|
|
|
[bas ?:(top 0 gop)]
|
2015-12-04 01:58:42 +03:00
|
|
|
|=({? b+@ c+tape} [(dug b) c])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ ro-co
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {{buz+@ bas+@ dop+@} dug+_+(@ @)}
|
|
|
|
|= hol+@
|
2013-09-29 00:21:18 +04:00
|
|
|
^- tape
|
|
|
|
?: =(0 dop)
|
|
|
|
rex
|
|
|
|
=> .(rex $(dop (dec dop)))
|
|
|
|
:- '.'
|
2015-12-08 04:46:28 +03:00
|
|
|
%- (em-co [bas 1] |=({? b+@ c+tape} [(dug b) c]))
|
2013-09-29 00:21:18 +04:00
|
|
|
[(cut buz [(dec dop) 1] hol)]
|
|
|
|
--
|
|
|
|
::
|
|
|
|
++ ne
|
2015-12-04 01:58:42 +03:00
|
|
|
|_ tig+@
|
2015-02-25 05:08:20 +03:00
|
|
|
++ c (cut 3 [tig 1] key:fa)
|
2013-09-29 00:21:18 +04:00
|
|
|
++ d (add tig '0')
|
|
|
|
++ x ?:((gte tig 10) (add tig 87) d)
|
2014-05-03 06:22:46 +04:00
|
|
|
++ v ?:((gte tig 10) (add tig 87) d)
|
2013-09-29 00:21:18 +04:00
|
|
|
++ w ?:(=(tig 63) '~' ?:(=(tig 62) '-' ?:((gte tig 36) (add tig 29) x)))
|
|
|
|
--
|
|
|
|
::
|
|
|
|
++ mu
|
2015-12-04 01:58:42 +03:00
|
|
|
|_ {top+@ bot+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
++ zag [p=(end 4 1 (add top bot)) q=bot]
|
|
|
|
++ zig [p=(end 4 1 (add top (sub 0x1.0000 bot))) q=bot]
|
|
|
|
++ zug (mix (lsh 4 1 top) bot)
|
|
|
|
--
|
|
|
|
::
|
|
|
|
++ so
|
2015-02-21 00:42:57 +03:00
|
|
|
~% %so + ~
|
2013-12-09 01:23:03 +04:00
|
|
|
|%
|
2013-09-29 00:21:18 +04:00
|
|
|
++ bisk
|
2015-07-06 20:21:31 +03:00
|
|
|
~+
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
|
|
|
;~ pfix (just '0')
|
|
|
|
;~ pose
|
|
|
|
(stag %ub ;~(pfix (just 'b') bay:ag))
|
2015-02-25 05:08:20 +03:00
|
|
|
(stag %uc ;~(pfix (just 'c') fim:ag))
|
2014-04-16 04:49:11 +04:00
|
|
|
(stag %ui ;~(pfix (just 'i') dim:ag))
|
2013-09-29 00:21:18 +04:00
|
|
|
(stag %ux ;~(pfix (just 'x') hex:ag))
|
|
|
|
(stag %uv ;~(pfix (just 'v') viz:ag))
|
|
|
|
(stag %uw ;~(pfix (just 'w') wiz:ag))
|
|
|
|
==
|
|
|
|
==
|
|
|
|
(stag %ud dem:ag)
|
|
|
|
==
|
|
|
|
++ crub
|
2015-07-06 20:21:31 +03:00
|
|
|
~+
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
|
|
|
%+ cook
|
2015-12-04 01:58:42 +03:00
|
|
|
|=(det+date `dime`[%da (year det)])
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ plug
|
|
|
|
%+ cook
|
2015-12-04 01:58:42 +03:00
|
|
|
|=({a+@ b+?} [b a])
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(plug dim:ag ;~(pose (cold | hep) (easy &)))
|
|
|
|
;~(pfix dot dim:ag) :: month
|
|
|
|
;~(pfix dot dim:ag) :: day
|
|
|
|
;~ pose
|
|
|
|
;~ pfix
|
|
|
|
;~(plug dot dot)
|
|
|
|
;~ plug
|
|
|
|
dum:ag
|
|
|
|
;~(pfix dot dum:ag)
|
|
|
|
;~(pfix dot dum:ag)
|
|
|
|
;~(pose ;~(pfix ;~(plug dot dot) (most dot qix:ab)) (easy ~))
|
|
|
|
==
|
|
|
|
==
|
|
|
|
(easy [0 0 0 ~])
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
|
|
|
%+ cook
|
2015-12-04 01:58:42 +03:00
|
|
|
|= {a+(list {p+?($d $h $m $s) q+@}) b+(list @)}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ rop=`tarp`[0 0 0 0 b]
|
|
|
|
|- ^- dime
|
|
|
|
?~ a
|
|
|
|
[%dr (yule rop)]
|
|
|
|
?- p.i.a
|
2015-12-08 04:23:27 +03:00
|
|
|
$d $(a t.a, d.rop (add q.i.a d.rop))
|
|
|
|
$h $(a t.a, h.rop (add q.i.a h.rop))
|
|
|
|
$m $(a t.a, m.rop (add q.i.a m.rop))
|
|
|
|
$s $(a t.a, s.rop (add q.i.a s.rop))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
;~ plug
|
|
|
|
%+ most
|
|
|
|
dot
|
2013-12-09 01:23:03 +04:00
|
|
|
;~ pose
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(pfix (just 'd') (stag %d dim:ag))
|
|
|
|
;~(pfix (just 'h') (stag %h dim:ag))
|
|
|
|
;~(pfix (just 'm') (stag %m dim:ag))
|
|
|
|
;~(pfix (just 's') (stag %s dim:ag))
|
|
|
|
==
|
|
|
|
;~(pose ;~(pfix ;~(plug dot dot) (most dot qix:ab)) (easy ~))
|
|
|
|
==
|
|
|
|
::
|
|
|
|
(stag %p fed:ag)
|
2014-03-20 05:05:42 +04:00
|
|
|
;~(pfix dot (stag %ta urs:ab))
|
2015-06-26 02:02:29 +03:00
|
|
|
;~(pfix sig (stag %t urx:ab))
|
|
|
|
;~(pfix hep (stag %c (cook turf urx:ab)))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
++ nuck
|
2015-12-04 01:58:42 +03:00
|
|
|
~/ %nuck |= a+nail %. a
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ knee *coin |. ~+
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
2015-12-05 02:59:29 +03:00
|
|
|
:~ :- ['a' 'z'] (cook |=(a+@ta [~ %tas a]) sym)
|
2013-12-21 11:46:49 +04:00
|
|
|
:- ['0' '9'] (stag ~ bisk)
|
|
|
|
:- '-' (stag ~ tash)
|
|
|
|
:- '.' ;~(pfix dot perd)
|
|
|
|
:- '~' ;~(pfix sig ;~(pose twid (easy [~ %n 0])))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2014-03-20 05:05:42 +04:00
|
|
|
++ nusk
|
2015-07-06 20:21:31 +03:00
|
|
|
~+
|
2015-12-04 01:58:42 +03:00
|
|
|
:(sear |=(a+@ta (rush a nuck)) wick urt:ab)
|
2013-09-29 00:21:18 +04:00
|
|
|
++ perd
|
2015-07-06 20:21:31 +03:00
|
|
|
~+
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
|
|
|
(stag ~ zust)
|
2014-03-20 05:05:42 +04:00
|
|
|
(stag %many (ifix [cab ;~(plug cab cab)] (more cab nusk)))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2014-07-19 06:45:10 +04:00
|
|
|
++ royl
|
2015-07-06 20:21:31 +03:00
|
|
|
~+
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ ^= moo
|
2015-12-04 01:58:42 +03:00
|
|
|
|= a+tape
|
2015-07-12 20:26:23 +03:00
|
|
|
:- (lent a)
|
|
|
|
(scan a (bass 10 (plus sid:ab)))
|
2014-07-18 00:56:08 +04:00
|
|
|
=+ ^= voy
|
2015-07-13 00:59:10 +03:00
|
|
|
%+ cook royl-cell
|
|
|
|
;~ pose
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ plug
|
2015-08-05 04:27:27 +03:00
|
|
|
(easy %d)
|
2015-07-13 00:59:10 +03:00
|
|
|
;~ pose (cold | hep) (easy &) ==
|
2015-07-12 20:26:23 +03:00
|
|
|
;~ plug dim:ag
|
|
|
|
;~ pose
|
|
|
|
;~(pfix dot (cook moo (plus (shim '0' '9'))))
|
|
|
|
(easy [0 0])
|
|
|
|
==
|
2015-07-13 00:59:10 +03:00
|
|
|
;~ pose
|
|
|
|
;~ pfix
|
|
|
|
(just 'e')
|
|
|
|
;~(plug ;~(pose (cold | hep) (easy &)) dim:ag)
|
|
|
|
==
|
|
|
|
(easy [& 0])
|
2015-06-12 20:56:30 +03:00
|
|
|
==
|
2014-07-18 00:56:08 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2015-07-13 00:59:10 +03:00
|
|
|
;~ plug
|
|
|
|
(easy %i)
|
|
|
|
;~ sfix
|
|
|
|
;~ pose (cold | hep) (easy &) ==
|
|
|
|
(jest 'inf')
|
|
|
|
==
|
|
|
|
==
|
|
|
|
;~ plug
|
|
|
|
(easy %n)
|
|
|
|
(cold ~ (jest 'nan'))
|
|
|
|
==
|
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
2014-06-27 23:24:42 +04:00
|
|
|
(stag %rh (cook rylh ;~(pfix ;~(plug sig sig) voy)))
|
|
|
|
(stag %rq (cook rylq ;~(pfix ;~(plug sig sig sig) voy)))
|
|
|
|
(stag %rd (cook ryld ;~(pfix sig voy)))
|
2015-07-12 20:26:23 +03:00
|
|
|
(stag %rs (cook ryls voy))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2014-06-27 23:24:42 +04:00
|
|
|
++ royl-cell
|
2015-12-04 02:53:57 +03:00
|
|
|
|= rn
|
2015-07-12 20:26:23 +03:00
|
|
|
^- dn
|
2015-12-04 01:58:42 +03:00
|
|
|
?. ?=({$d *} +<) +<
|
2015-07-12 20:26:23 +03:00
|
|
|
=+ ^= h
|
2015-07-13 00:59:10 +03:00
|
|
|
(dif:si (new:si f.b i.b) (sun:si d.b))
|
2015-08-05 04:27:27 +03:00
|
|
|
[%d a h (add (mul c.b (pow 10 d.b)) e.b)]
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ tash
|
2015-07-06 20:21:31 +03:00
|
|
|
~+
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ^= neg
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {syn+? mol+dime} ^- dime
|
2013-09-29 00:21:18 +04:00
|
|
|
?> =('u' (end 3 1 p.mol))
|
|
|
|
[(cat 3 's' (rsh 3 1 p.mol)) (new:si syn q.mol)]
|
|
|
|
;~ pfix hep
|
|
|
|
;~ pose
|
2015-12-04 04:24:39 +03:00
|
|
|
(cook |=(a+dime (neg | a)) bisk)
|
|
|
|
;~(pfix hep (cook |=(a+dime (neg & a)) bisk))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
2015-07-12 20:26:23 +03:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ twid
|
2015-07-06 20:21:31 +03:00
|
|
|
~+
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
2015-12-04 04:24:39 +03:00
|
|
|
(cook |=(a+@ [%blob (cue a)]) ;~(pfix (just '0') vum:ag))
|
2013-09-29 00:21:18 +04:00
|
|
|
(stag ~ crub)
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ zust
|
2015-07-06 20:21:31 +03:00
|
|
|
~+
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
|
|
|
(stag %is bip:ag)
|
|
|
|
(stag %if lip:ag)
|
|
|
|
(stag %f ;~(pose (cold & (just 'y')) (cold | (just 'n'))))
|
|
|
|
royl
|
|
|
|
==
|
|
|
|
--
|
2015-12-04 04:24:39 +03:00
|
|
|
++ scot ~/ %scot |=(mol+dime ~(rent co %$ mol))
|
|
|
|
++ scow |=(mol+dime ~(rend co %$ mol))
|
|
|
|
++ slat |=(mod+@tas |=(txt=@ta (slaw mod txt)))
|
|
|
|
++ slav |=({mod+@tas txt+@ta} (need (slaw mod txt)))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ slaw
|
2015-05-14 20:46:52 +03:00
|
|
|
~/ %slaw
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {mod+@tas txt+@ta}
|
2015-12-04 04:24:39 +03:00
|
|
|
^- (unit @)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ con=(slay txt)
|
2015-12-08 04:23:27 +03:00
|
|
|
?.(&(?=({$~ $$ @ @} con) =(p.p.u.con mod)) ~ [~ q.p.u.con])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ slay
|
2015-12-04 04:24:39 +03:00
|
|
|
|= txt+@ta ^- (unit coin)
|
2015-02-21 00:42:57 +03:00
|
|
|
=+ ^= vex
|
|
|
|
?: (gth 0x7fff.ffff txt) :: XX petty cache
|
|
|
|
~+ ((full nuck:so) [[1 1] (trip txt)])
|
|
|
|
((full nuck:so) [[1 1] (trip txt)])
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.vex
|
2013-09-29 00:21:18 +04:00
|
|
|
~
|
|
|
|
[~ p.u.q.vex]
|
|
|
|
::
|
2014-10-28 23:15:44 +03:00
|
|
|
++ smyt :: pretty print path
|
2013-09-29 00:21:18 +04:00
|
|
|
|= bon=path ^- tank
|
2015-11-29 01:44:29 +03:00
|
|
|
:+ %rose [['/' ~] ['/' ~] ~]
|
2015-12-05 02:59:29 +03:00
|
|
|
(turn bon |=(a+@ [%leaf (trip a)]))
|
2014-10-28 21:55:44 +03:00
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
++ spat |=(pax+path (crip (spud pax))) :: render path to cord
|
2015-12-06 00:37:28 +03:00
|
|
|
++ spud |=(pax+path ~(ram re (smyt pax))) :: render path to tape
|
2015-01-26 22:15:35 +03:00
|
|
|
++ stab :: parse cord to path
|
|
|
|
=+ fel=;~(pfix fas (more fas urs:ab))
|
|
|
|
|=(zep=@t `path`(rash zep fel))
|
2014-04-10 00:35:28 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eN, pseudo-cryptography ::
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ un :: =(x (wred (wren x)))
|
|
|
|
|%
|
|
|
|
++ wren :: conceal structure
|
2015-12-04 04:24:39 +03:00
|
|
|
|= pyn+@ ^- @
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ len=(met 3 pyn)
|
|
|
|
?: =(0 len)
|
|
|
|
0
|
|
|
|
=> .(len (dec len))
|
|
|
|
=+ mig=(zaft (xafo len (cut 3 [len 1] pyn)))
|
|
|
|
%+ can 3
|
2015-12-04 18:16:34 +03:00
|
|
|
%- flop ^- (list {@ @})
|
2013-09-29 00:21:18 +04:00
|
|
|
:- [1 mig]
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- (list {@ @})
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 len)
|
|
|
|
~
|
|
|
|
=> .(len (dec len))
|
|
|
|
=+ mog=(zyft :(mix mig (end 3 1 len) (cut 3 [len 1] pyn)))
|
|
|
|
[[1 mog] $(mig mog)]
|
|
|
|
::
|
|
|
|
++ wred :: restore structure
|
2015-12-04 04:24:39 +03:00
|
|
|
|= cry+@ ^- @
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ len=(met 3 cry)
|
|
|
|
?: =(0 len)
|
|
|
|
0
|
|
|
|
=> .(len (dec len))
|
|
|
|
=+ mig=(cut 3 [len 1] cry)
|
|
|
|
%+ can 3
|
2015-12-04 04:24:39 +03:00
|
|
|
%- flop ^- (list {@ @})
|
2013-09-29 00:21:18 +04:00
|
|
|
:- [1 (xaro len (zart mig))]
|
2015-12-04 04:24:39 +03:00
|
|
|
|- ^- (list {@ @})
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 len)
|
|
|
|
~
|
|
|
|
=> .(len (dec len))
|
|
|
|
=+ mog=(cut 3 [len 1] cry)
|
|
|
|
[[1 :(mix mig (end 3 1 len) (zyrt mog))] $(mig mog)]
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
++ xafo |=({a+@ b+@} +((mod (add (dec b) a) 255)))
|
|
|
|
++ xaro |=({a+@ b+@} +((mod (add (dec b) (sub 255 (mod a 255))) 255)))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ zaft :: forward 255-sbox
|
2015-12-04 04:24:39 +03:00
|
|
|
|= a+@D
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ^= b
|
|
|
|
0xcc.75bc.86c8.2fb1.9a42.f0b3.79a0.92ca.21f6.1e41.cde5.fcc0.
|
|
|
|
7e85.51ae.1005.c72d.1246.07e8.7c64.a914.8d69.d9f4.59c2.8038.
|
|
|
|
1f4a.dca2.6fdf.66f9.f561.a12e.5a16.f7b0.a39f.364e.cb70.7318.
|
|
|
|
1de1.ad31.63d1.abd4.db68.6a33.134d.a760.edee.5434.493a.e323.
|
|
|
|
930d.8f3d.3562.bb81.0b24.43cf.bea5.a6eb.52b4.0229.06b2.6704.
|
|
|
|
78c9.45ec.d75e.58af.c577.b7b9.c40e.017d.90c3.87f8.96fa.1153.
|
|
|
|
0372.7f30.1c32.ac83.ff17.c6e4.d36d.6b55.e2ce.8c71.8a5b.b6f3.
|
|
|
|
9d4b.eab5.8b3c.e7f2.a8fe.9574.5de0.bf20.3f15.9784.9939.5f9c.
|
|
|
|
e609.564f.d8a4.b825.9819.94aa.2c08.8e4c.9b22.477a.2840.3ed6.
|
|
|
|
3750.6ef1.44dd.89ef.6576.d00a.fbda.9ed2.3b6c.7b0c.bde9.2ade.
|
|
|
|
5c88.c182.481a.1b0f.2bfd.d591.2726.57ba
|
|
|
|
(cut 3 [(dec a) 1] b)
|
|
|
|
::
|
|
|
|
++ zart :: reverse 255-sbox
|
2015-12-04 04:24:39 +03:00
|
|
|
|= a+@D
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ ^= b
|
2013-09-29 00:21:18 +04:00
|
|
|
0x68.4f07.ea1c.73c9.75c2.efc8.d559.5125.f621.a7a8.8591.5613.
|
|
|
|
dd52.40eb.65a2.60b7.4bcb.1123.ceb0.1bd6.3c84.2906.b164.19b3.
|
|
|
|
1e95.5fec.ffbc.f187.fbe2.6680.7c77.d30e.e94a.9414.fd9a.017d.
|
|
|
|
3a7e.5a55.8ff5.8bf9.c181.e5b6.6ab2.35da.50aa.9293.3bc0.cdc6.
|
|
|
|
f3bf.1a58.4130.f844.3846.744e.36a0.f205.789e.32d8.5e54.5c22.
|
|
|
|
0f76.fce7.4569.0d99.d26e.e879.dc16.2df4.887f.1ffe.4dba.6f5d.
|
|
|
|
bbcc.2663.1762.aed7.af8a.ca20.dbb4.9bc7.a942.834c.105b.c4d4.
|
|
|
|
8202.3e61.a671.90e6.273d.bdab.3157.cfa4.0c2e.df86.2496.f7ed.
|
|
|
|
2b48.2a9d.5318.a343.d128.be9c.a5ad.6bb5.6dfa.c5e1.3408.128d.
|
|
|
|
2c04.0339.97a1.2ff0.49d0.eeb8.6c0a.0b37.b967.c347.d9ac.e072.
|
|
|
|
e409.7b9f.1598.1d3f.33de.8ce3.8970.8e7a
|
|
|
|
(cut 3 [(dec a) 1] b)
|
|
|
|
::
|
|
|
|
++ zyft :: forward 256-sbox
|
2015-12-04 04:24:39 +03:00
|
|
|
|= a+@D
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ^= b
|
|
|
|
0xbb49.b71f.b881.b402.17e4.6b86.69b5.1647.115f.dddb.7ca5.
|
|
|
|
8371.4bd5.19a9.b092.605d.0d9b.e030.a0cc.78ba.5706.4d2d.
|
|
|
|
986a.768c.f8e8.c4c7.2f1c.effe.3cae.01c0.253e.65d3.3872.
|
|
|
|
ce0e.7a74.8ac6.daac.7e5c.6479.44ec.4143.3d20.4af0.ee6c.
|
|
|
|
c828.deca.0377.249f.ffcd.7b4f.eb7d.66f2.8951.042e.595a.
|
|
|
|
8e13.f9c3.a79a.f788.6199.9391.7fab.6200.4ce5.0758.e2f1.
|
|
|
|
7594.c945.d218.4248.afa1.e61a.54fb.1482.bea4.96a2.3473.
|
|
|
|
63c2.e7cb.155b.120a.4ed7.bfd8.b31b.4008.f329.fca3.5380.
|
|
|
|
9556.0cb2.8722.2bea.e96e.3ac5.d1bc.10e3.2c52.a62a.b1d6.
|
|
|
|
35aa.d05e.f6a8.0f3b.31ed.559d.09ad.f585.6d21.fd1d.8d67.
|
|
|
|
370b.26f4.70c1.b923.4684.6fbd.cf8b.5036.0539.9cdc.d93f.
|
|
|
|
9068.1edf.8f33.b632.d427.97fa.9ee1
|
|
|
|
(cut 3 [a 1] b)
|
|
|
|
::
|
|
|
|
++ zyrt :: reverse 256-sbox
|
2015-12-04 04:24:39 +03:00
|
|
|
|= a+@D
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ ^= b
|
2013-09-29 00:21:18 +04:00
|
|
|
0x9fc8.2753.6e02.8fcf.8b35.2b20.5598.7caa.c9a9.30b0.9b48.
|
|
|
|
47ce.6371.80f6.407d.00dd.0aa5.ed10.ecb7.0f5a.5c3a.e605.
|
|
|
|
c077.4337.17bd.9eda.62a4.79a7.ccb8.44cd.8e64.1ec4.5b6b.
|
|
|
|
1842.ffd8.1dfb.fd07.f2f9.594c.3be3.73c6.2cb6.8438.e434.
|
|
|
|
8d3d.ea6a.5268.72db.a001.2e11.de8c.88d3.0369.4f7a.87e2.
|
|
|
|
860d.0991.25d0.16b9.978a.4bf4.2a1a.e96c.fa50.85b5.9aeb.
|
|
|
|
9dbb.b2d9.a2d1.7bba.66be.e81f.1946.29a8.f5d2.f30c.2499.
|
|
|
|
c1b3.6583.89e1.ee36.e0b4.6092.937e.d74e.2f6f.513e.9615.
|
|
|
|
9c5d.d581.e7ab.fe74.f01b.78b1.ae75.af57.0ec2.adc7.3245.
|
|
|
|
12bf.2314.3967.0806.31dc.cb94.d43f.493c.54a6.0421.c3a1.
|
|
|
|
1c4a.28ac.fc0b.26ca.5870.e576.f7f1.616d.905f.ef41.33bc.
|
|
|
|
df4d.225e.2d56.7fd6.1395.a3f8.c582
|
|
|
|
(cut 3 [a 1] b)
|
|
|
|
--
|
2015-01-13 02:12:52 +03:00
|
|
|
::
|
|
|
|
++ ob
|
|
|
|
|%
|
|
|
|
++ feen :: conceal structure v2
|
2015-12-04 04:24:39 +03:00
|
|
|
|= pyn+@ ^- @
|
2015-01-13 02:12:52 +03:00
|
|
|
?: &((gte pyn 0x1.0000) (lte pyn 0xffff.ffff))
|
|
|
|
(add 0x1.0000 (fice (sub pyn 0x1.0000)))
|
|
|
|
?: &((gte pyn 0x1.0000.0000) (lte pyn 0xffff.ffff.ffff.ffff))
|
|
|
|
=+ lo=(dis pyn 0xffff.ffff)
|
|
|
|
=+ hi=(dis pyn 0xffff.ffff.0000.0000)
|
|
|
|
%+ con hi
|
|
|
|
(add 0x1.0000 (fice (sub lo 0x1.0000)))
|
|
|
|
pyn
|
|
|
|
::
|
|
|
|
++ fend :: restore structure v2
|
2015-12-04 04:24:39 +03:00
|
|
|
|= cry+@ ^- @
|
2015-01-13 02:12:52 +03:00
|
|
|
?: &((gte cry 0x1.0000) (lte cry 0xffff.ffff))
|
|
|
|
(add 0x1.0000 (teil (sub cry 0x1.0000)))
|
|
|
|
?: &((gte cry 0x1.0000.0000) (lte cry 0xffff.ffff.ffff.ffff))
|
|
|
|
=+ lo=(dis cry 0xffff.ffff)
|
|
|
|
=+ hi=(dis cry 0xffff.ffff.0000.0000)
|
|
|
|
%+ con hi
|
|
|
|
(add 0x1.0000 (teil (sub lo 0x1.0000)))
|
|
|
|
cry
|
|
|
|
::
|
|
|
|
++ fice :: adapted from
|
2015-12-04 04:24:39 +03:00
|
|
|
|= nor+@ :: black and rogaway
|
2015-01-13 02:12:52 +03:00
|
|
|
^- @ :: "ciphers with
|
|
|
|
=+ ^= sel :: arbitrary finite
|
|
|
|
%+ rynd 2 :: domains", 2002
|
|
|
|
%+ rynd 1
|
|
|
|
%+ rynd 0
|
|
|
|
[(mod nor 65.535) (div nor 65.535)]
|
|
|
|
(add (mul 65.535 -.sel) +.sel)
|
|
|
|
::
|
|
|
|
++ teil :: reverse ++fice
|
2015-12-04 04:24:39 +03:00
|
|
|
|= vip+@
|
2015-01-13 02:12:52 +03:00
|
|
|
^- @
|
|
|
|
=+ ^= sel
|
|
|
|
%+ rund 0
|
|
|
|
%+ rund 1
|
|
|
|
%+ rund 2
|
|
|
|
[(mod vip 65.535) (div vip 65.535)]
|
|
|
|
(add (mul 65.535 -.sel) +.sel)
|
|
|
|
::
|
|
|
|
++ rynd :: feistel round
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {n+@ l+@ r+@}
|
|
|
|
^- {@ @}
|
2015-01-13 02:12:52 +03:00
|
|
|
:- r
|
|
|
|
?~ (mod n 2)
|
|
|
|
(~(sum fo 65.535) l (en:aesc (snag n raku) r))
|
|
|
|
(~(sum fo 65.536) l (en:aesc (snag n raku) r))
|
|
|
|
::
|
|
|
|
++ rund :: reverse round
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {n+@ l+@ r+@}
|
|
|
|
^- {@ @}
|
2015-01-13 02:12:52 +03:00
|
|
|
:- r
|
|
|
|
?~ (mod n 2)
|
|
|
|
(~(dif fo 65.535) l (en:aesc (snag n raku) r))
|
|
|
|
(~(dif fo 65.536) l (en:aesc (snag n raku) r))
|
|
|
|
::
|
|
|
|
++ raku
|
2015-12-04 04:24:39 +03:00
|
|
|
^- (list @ux)
|
2015-01-13 02:12:52 +03:00
|
|
|
:~ 0x15f6.25e3.083a.eb3e.7a55.d4db.fb99.32a3.
|
|
|
|
43af.2750.219e.8a24.e5f8.fac3.6c36.f968
|
|
|
|
0xf2ff.24fe.54d0.1abd.4b2a.d8aa.4402.8e88.
|
|
|
|
e82f.19ec.948d.b1bb.ed2e.f791.83a3.8133
|
|
|
|
0xa3d8.6a7b.400e.9e91.187d.91a7.6942.f34a.
|
|
|
|
6f5f.ab8e.88b9.c089.b2dc.95a6.aed5.e3a4
|
|
|
|
==
|
|
|
|
--
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2014-04-10 00:35:28 +04:00
|
|
|
:: section 2eO, virtualization ::
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ mack
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {sub+* fol+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- (unit)
|
2015-12-04 04:24:39 +03:00
|
|
|
=+ ton=(mink [sub fol] |+(* ~))
|
2015-12-08 04:23:27 +03:00
|
|
|
?.(?=({$0 *} ton) ~ [~ p.ton])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ mink
|
|
|
|
~/ %mink
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {{sub+* fol+*} sky+_+(* (unit))}
|
|
|
|
=+ tax=*(list {@ta *})
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- tone
|
|
|
|
?@ fol
|
|
|
|
[%2 tax]
|
|
|
|
?: ?=(^ -.fol)
|
|
|
|
=+ hed=$(fol -.fol)
|
2015-12-04 04:24:39 +03:00
|
|
|
?: ?=($2 -.hed)
|
2013-09-29 00:21:18 +04:00
|
|
|
hed
|
|
|
|
=+ tal=$(fol +.fol)
|
|
|
|
?- -.tal
|
2015-12-04 04:24:39 +03:00
|
|
|
$0 ?-(-.hed $0 [%0 p.hed p.tal], $1 hed)
|
|
|
|
$1 ?-(-.hed $0 tal, $1 [%1 (weld p.hed p.tal)])
|
|
|
|
$2 tal
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2014-06-09 07:22:11 +04:00
|
|
|
?+ fol
|
|
|
|
[%2 tax]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{$0 b+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 b.fol) [%2 tax]
|
|
|
|
?: =(1 b.fol) [%0 sub]
|
|
|
|
?: ?=(@ sub) [%2 tax]
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ [now=(cap b.fol) lat=(mas b.fol)]
|
2013-09-29 00:21:18 +04:00
|
|
|
$(b.fol lat, sub ?:(=(2 now) -.sub +.sub))
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{$1 b+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
[%0 b.fol]
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{$2 b+{^ *}}
|
2014-06-09 07:22:11 +04:00
|
|
|
=+ ben=$(fol b.fol)
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=($0 -.ben) ben
|
2013-09-29 00:21:18 +04:00
|
|
|
?>(?=(^ p.ben) $(sub -.p.ben, fol +.p.ben))
|
2014-08-08 22:18:09 +04:00
|
|
|
::?>(?=(^ p.ben) $([sub fol] p.ben)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{$3 b+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ben=$(fol b.fol)
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=($0 -.ben) ben
|
2013-09-29 00:21:18 +04:00
|
|
|
[%0 .?(p.ben)]
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{$4 b+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ben=$(fol b.fol)
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=($0 -.ben) ben
|
2013-09-29 00:21:18 +04:00
|
|
|
?. ?=(@ p.ben) [%2 tax]
|
|
|
|
[%0 .+(p.ben)]
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{$5 b+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ben=$(fol b.fol)
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=($0 -.ben) ben
|
2013-09-29 00:21:18 +04:00
|
|
|
?. ?=(^ p.ben) [%2 tax]
|
|
|
|
[%0 =(-.p.ben +.p.ben)]
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{$6 b+* c+* d+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
$(fol =>(fol [2 [0 1] 2 [1 c d] [1 0] 2 [1 2 3] [1 0] 4 4 b]))
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{$7 b+* c+*} $(fol =>(fol [2 b 1 c]))
|
|
|
|
{$8 b+* c+*} $(fol =>(fol [7 [[0 1] b] c]))
|
|
|
|
{$9 b+* c+*} $(fol =>(fol [7 c 0 b]))
|
|
|
|
{$10 @ c+*} $(fol c.fol)
|
|
|
|
{$10 {b+* c+*} d+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ben=$(fol c.fol)
|
2015-12-04 04:24:39 +03:00
|
|
|
?. ?=($0 -.ben) ben
|
|
|
|
?: ?=(?($hunk $hand $lose $mean $spot) b.fol)
|
2014-06-09 07:22:11 +04:00
|
|
|
$(fol d.fol, tax [[b.fol p.ben] tax])
|
2013-12-09 01:23:03 +04:00
|
|
|
$(fol d.fol)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{$11 b+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ben=$(fol b.fol)
|
2015-12-04 04:24:39 +03:00
|
|
|
?. ?=($0 -.ben) ben
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ val=(sky p.ben)
|
2014-06-09 07:22:11 +04:00
|
|
|
?~(val [%1 p.ben ~] [%0 u.val])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ mock
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {{sub+* fol+*} sky+_+(* (unit))}
|
2013-09-29 00:21:18 +04:00
|
|
|
(mook (mink [sub fol] sky))
|
|
|
|
::
|
2015-11-30 21:58:09 +03:00
|
|
|
++ moop
|
2015-12-08 04:23:27 +03:00
|
|
|
|= pon+(list {@ta *}) ^+ pon
|
2015-11-29 01:44:29 +03:00
|
|
|
?~ pon ~
|
|
|
|
:- i.pon
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=({$spot * ^} i.pon)
|
2015-11-29 01:44:29 +03:00
|
|
|
$(pon t.pon)
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=({{$spot * ^} *} t.pon)
|
2015-11-29 01:44:29 +03:00
|
|
|
$(pon t.pon)
|
|
|
|
=> .(pon t.pon)
|
|
|
|
=+ sot=+.i.pon
|
2015-12-08 04:23:27 +03:00
|
|
|
|- ^- (list {@ta *})
|
|
|
|
?. ?=({{$spot * ^} *} t.pon)
|
2015-11-29 01:44:29 +03:00
|
|
|
[[%spot sot] ^$(pon t.pon)]
|
|
|
|
=+ sop=+.i.pon
|
|
|
|
?: ?& =(-.sop -.sot)
|
|
|
|
(lor +<.sop +<.sot)
|
|
|
|
(lor +>.sot +>.sop)
|
|
|
|
==
|
|
|
|
$(sot sop, pon t.pon)
|
|
|
|
[[%spot sot] ^$(pon t.pon)]
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ mook
|
2015-12-04 04:24:39 +03:00
|
|
|
|= ton+tone
|
2013-09-29 00:21:18 +04:00
|
|
|
^- toon
|
2015-12-04 04:24:39 +03:00
|
|
|
?. ?=({$2 *} ton) ton
|
2013-09-29 00:21:18 +04:00
|
|
|
:- %2
|
2015-11-30 21:58:09 +03:00
|
|
|
=. p.ton (moop p.ton)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ yel=(lent p.ton)
|
2013-12-09 01:23:03 +04:00
|
|
|
=. p.ton
|
2013-09-29 00:21:18 +04:00
|
|
|
?. (gth yel 256) p.ton
|
|
|
|
%+ weld
|
|
|
|
(scag 128 p.ton)
|
2015-12-04 18:16:34 +03:00
|
|
|
^- (list {@ta *})
|
2013-09-29 00:21:18 +04:00
|
|
|
:_ (slag (sub yel 128) p.ton)
|
2013-12-09 01:23:03 +04:00
|
|
|
:- %lose
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ rap 3
|
2015-11-29 01:44:29 +03:00
|
|
|
"[skipped {(scow %ud (sub yel 256))} frames]"
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- (list tank)
|
|
|
|
?~ p.ton ~
|
|
|
|
=+ rex=$(p.ton t.p.ton)
|
|
|
|
?+ -.i.p.ton rex
|
2015-12-04 04:24:39 +03:00
|
|
|
$hunk [(tank +.i.p.ton) rex]
|
2015-12-04 18:16:34 +03:00
|
|
|
$lose [[%leaf (rip 3 (@ +.i.p.ton))] rex]
|
2015-12-06 00:37:28 +03:00
|
|
|
$hand [[%leaf (scow %p (mug +.i.p.ton))] rex]
|
2015-12-04 04:24:39 +03:00
|
|
|
$mean :_ rex
|
2015-12-04 18:16:34 +03:00
|
|
|
?@ +.i.p.ton [%leaf (rip 3 (@ +.i.p.ton))]
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ mac=(mack +.i.p.ton +<.i.p.ton)
|
2014-01-04 11:28:16 +04:00
|
|
|
?~(mac [%leaf "####"] (tank u.mac))
|
2015-12-04 04:24:39 +03:00
|
|
|
$spot :_ rex
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ sot=(spot +.i.p.ton)
|
2015-11-29 01:44:29 +03:00
|
|
|
:+ %rose [":" ~ ~]
|
|
|
|
:~ (smyt p.sot)
|
|
|
|
=> [ud=|=(a=@u (scow %ud a)) q.sot]
|
|
|
|
leaf/"<[{(ud p.p)} {(ud q.p)}].[{(ud p.q)} {(ud q.q)}]>"
|
|
|
|
== ==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ mang
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {{gat+* sam+*} sky+_+(* (unit))}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- (unit)
|
|
|
|
=+ ton=(mong [[gat sam] sky])
|
2015-12-04 04:24:39 +03:00
|
|
|
?.(?=({$0 *} ton) ~ [~ p.ton])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ mong
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {{gat+* sam+*} sky+_+(* (unit))}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- toon
|
|
|
|
?. &(?=(^ gat) ?=(^ +.gat))
|
|
|
|
[%2 ~]
|
|
|
|
(mock [[-.gat [sam +>.gat]] -.gat] sky)
|
|
|
|
::
|
|
|
|
++ mung
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {{gat+* sam+*} sky+_+(* (unit))}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- tone
|
|
|
|
?. &(?=(^ gat) ?=(^ +.gat))
|
|
|
|
[%2 ~]
|
|
|
|
(mink [[-.gat [sam +>.gat]] -.gat] sky)
|
2014-03-20 05:05:42 +04:00
|
|
|
::
|
|
|
|
++ mule :: typed virtual
|
2014-05-19 03:16:01 +04:00
|
|
|
~/ %mule
|
2015-12-04 04:24:39 +03:00
|
|
|
|* taq+__(|.(**))
|
2014-03-20 05:05:42 +04:00
|
|
|
=+ mud=(mute taq)
|
|
|
|
?- -.mud
|
2015-12-04 04:24:39 +03:00
|
|
|
{$&} [%& p=$:taq] :: XX transition
|
|
|
|
$| [%| p=p.mud]
|
2014-03-20 05:05:42 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ mute :: untyped virtual
|
2015-12-04 04:24:39 +03:00
|
|
|
|= taq+__(^?(|.(**)))
|
|
|
|
^- (each * (list tank))
|
2014-03-20 05:05:42 +04:00
|
|
|
=+ ton=(mock [taq 9 2 0 1] |=(* ~))
|
|
|
|
?- -.ton
|
2015-12-04 04:24:39 +03:00
|
|
|
$0 [%& p.ton]
|
2015-12-05 02:59:29 +03:00
|
|
|
$1 [%| (turn p.ton |=(a+* (smyt (path a))))]
|
2015-12-04 04:24:39 +03:00
|
|
|
$2 [%| p.ton]
|
2014-03-20 05:05:42 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2014-04-10 00:35:28 +04:00
|
|
|
:: section 2eP, diff (move me) ::
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
::
|
|
|
|
++ berk :: invert diff patch
|
2015-12-04 04:24:39 +03:00
|
|
|
|* bur+(urge)
|
2013-12-20 21:34:13 +04:00
|
|
|
|- ^+ bur
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ bur ~
|
|
|
|
:_ $(bur t.bur)
|
|
|
|
?- -.i.bur
|
2015-12-08 05:04:19 +03:00
|
|
|
{$&} i.bur
|
|
|
|
{$|} [%| q.i.bur p.i.bur]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ diff :: generate patch
|
2015-12-04 04:24:39 +03:00
|
|
|
|= pum+umph
|
|
|
|
|= {old+* new+*} ^- udon
|
2013-09-29 00:21:18 +04:00
|
|
|
:- pum
|
|
|
|
?+ pum ~|(%unsupported !!)
|
2015-12-04 04:24:39 +03:00
|
|
|
$a [%d (nude old new)]
|
|
|
|
$b =+ [hel=(cue ((hard @) old)) hev=(cue ((hard @) new))]
|
2014-05-20 22:53:49 +04:00
|
|
|
[%d (nude hel hev)]
|
2015-12-04 04:24:39 +03:00
|
|
|
$c =+ [hel=(lore ((hard @) old)) hev=(lore ((hard @) new))]
|
2013-09-29 00:21:18 +04:00
|
|
|
[%c (lusk hel hev (loss hel hev))]
|
2013-12-09 01:23:03 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ loss :: longest subsequence
|
|
|
|
~/ %loss
|
2015-12-04 04:24:39 +03:00
|
|
|
|* {hel+(list) hev+(list)}
|
2013-12-20 21:34:13 +04:00
|
|
|
|- ^+ hev
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ ^= sev
|
2015-12-04 18:16:34 +03:00
|
|
|
=+ [inx=0 sev=*(map ,_i.-.hev (list @ud))]
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ sev
|
|
|
|
?~ hev sev
|
|
|
|
=+ guy=(~(get by sev) i.hev)
|
|
|
|
$(hev t.hev, inx +(inx), sev (~(put by sev) i.hev [inx ?~(guy ~ u.guy)]))
|
2015-12-04 04:24:39 +03:00
|
|
|
=| gox+{p+@ud q+(map @ud {p+@ud q+__(hev)})}
|
2013-09-29 00:21:18 +04:00
|
|
|
=< abet
|
|
|
|
=< main
|
|
|
|
|%
|
|
|
|
++ abet :: subsequence
|
|
|
|
^+ hev
|
|
|
|
?: =(0 p.gox) ~
|
|
|
|
(flop q:(need (~(get by q.gox) (dec p.gox))))
|
|
|
|
::
|
|
|
|
++ hink :: extend fits top
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {inx+@ud goy+@ud} ^- ?
|
2013-09-29 00:21:18 +04:00
|
|
|
|(=(p.gox inx) (lth goy p:(need (~(get by q.gox) inx))))
|
|
|
|
::
|
|
|
|
++ lonk :: extend fits bottom
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {inx+@ud goy+@ud} ^- ?
|
2013-09-29 00:21:18 +04:00
|
|
|
|(=(0 inx) (gth goy p:(need (~(get by q.gox) (dec inx)))))
|
|
|
|
::
|
|
|
|
++ lune :: extend
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {inx+@ud goy+@ud}
|
2013-09-29 00:21:18 +04:00
|
|
|
^+ +>
|
|
|
|
%_ +>.$
|
|
|
|
gox
|
|
|
|
:- ?:(=(inx p.gox) +(p.gox) p.gox)
|
2013-12-09 01:23:03 +04:00
|
|
|
%+ ~(put by q.gox) inx
|
2013-09-29 00:21:18 +04:00
|
|
|
[goy (snag goy hev) ?:(=(0 inx) ~ q:(need (~(get by q.gox) (dec inx))))]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ merg :: merge all matches
|
2015-12-04 04:24:39 +03:00
|
|
|
|= gay+(list @ud)
|
2013-09-29 00:21:18 +04:00
|
|
|
^+ +>
|
|
|
|
=+ ^= zes
|
2015-12-04 04:24:39 +03:00
|
|
|
=+ [inx=0 zes=*(list {p+@ud q+@ud})]
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ zes
|
2015-12-08 05:04:19 +03:00
|
|
|
?: |(?=($~ gay) (gth inx p.gox)) zes
|
2013-09-29 00:21:18 +04:00
|
|
|
?. (lonk inx i.gay) $(gay t.gay)
|
|
|
|
?. (hink inx i.gay) $(inx +(inx))
|
|
|
|
$(inx +(inx), gay t.gay, zes [[inx i.gay] zes])
|
|
|
|
|- ^+ +>.^$
|
|
|
|
?~(zes +>.^$ $(zes t.zes, +>.^$ (lune i.zes)))
|
|
|
|
::
|
|
|
|
++ main
|
|
|
|
=+ hol=hel
|
|
|
|
|- ^+ +>
|
|
|
|
?~ hol +>
|
|
|
|
=+ guy=(~(get by sev) i.hol)
|
2015-12-04 04:24:39 +03:00
|
|
|
$(hol t.hol, +> (merg (flop `(list @ud)`?~(guy ~ u.guy))))
|
2013-09-29 00:21:18 +04:00
|
|
|
--
|
|
|
|
::
|
|
|
|
++ lore :: atom to line list
|
|
|
|
~/ %lore
|
2015-12-04 04:24:39 +03:00
|
|
|
|= lub+@
|
|
|
|
=| tez+(list @t)
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ tez
|
|
|
|
?: =(0 lub) (flop tez)
|
|
|
|
=+ ^= meg
|
|
|
|
=+ meg=0
|
|
|
|
|- ^- @ud
|
|
|
|
=+ gam=(cut 3 [meg 1] lub)
|
|
|
|
?:(|(=(10 gam) =(0 gam)) meg $(meg +(meg)))
|
2014-05-29 00:19:49 +04:00
|
|
|
=+ res=(rsh 3 +(meg) lub)
|
|
|
|
?: &(=(0 (cut 3 [meg 1] lub)) !=(0 res))
|
|
|
|
!!
|
|
|
|
$(lub res, tez [(end 3 meg lub) tez])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-10-22 06:04:27 +04:00
|
|
|
++ role :: line list to atom
|
2015-12-04 04:24:39 +03:00
|
|
|
|= tez+(list @t)
|
2015-12-05 02:59:29 +03:00
|
|
|
(rap 3 (turn tez |=(a+@t (cat 3 a 10))))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ lump :: apply patch
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {don+udon src+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- *
|
|
|
|
?+ p.don ~|(%unsupported !!)
|
2015-12-04 04:24:39 +03:00
|
|
|
$a
|
2013-09-29 00:21:18 +04:00
|
|
|
?+ -.q.don ~|(%unsupported !!)
|
2015-12-04 04:24:39 +03:00
|
|
|
$a q.q.don
|
|
|
|
$c (lurk ((hard (list)) src) p.q.don)
|
|
|
|
$d (lure src p.q.don)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
$c
|
2015-12-04 18:16:34 +03:00
|
|
|
=+ dst=(lore ((hard @) src))
|
2014-10-22 06:04:27 +04:00
|
|
|
%- role
|
2013-09-29 00:21:18 +04:00
|
|
|
?+ -.q.don ~|(%unsupported !!)
|
2015-12-04 18:16:34 +03:00
|
|
|
$a ((hard (list @t)) q.q.don)
|
2015-12-04 04:24:39 +03:00
|
|
|
$c (lurk dst p.q.don)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2014-04-16 05:25:40 +04:00
|
|
|
++ lure :: apply tree diff
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+* b+upas}
|
2014-04-16 05:25:40 +04:00
|
|
|
^- *
|
|
|
|
?^ -.b
|
|
|
|
[$(b -.b) $(b +.b)]
|
|
|
|
?+ -.b ~|(%unsupported !!)
|
2015-12-04 04:24:39 +03:00
|
|
|
$0 .*(a [0 p.b])
|
|
|
|
$1 .*(a [1 p.b])
|
2014-04-16 05:25:40 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
++ limp :: invert patch
|
2015-12-04 04:24:39 +03:00
|
|
|
|= don+udon ^- udon
|
2013-09-29 00:21:18 +04:00
|
|
|
:- p.don
|
|
|
|
?+ -.q.don ~|(%unsupported !!)
|
2015-12-04 04:24:39 +03:00
|
|
|
$a [%a q.q.don p.q.don]
|
|
|
|
$c [%c (berk p.q.don)]
|
|
|
|
$d [%d q.q.don p.q.don]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ hump :: general prepatch
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {pum+umph src+*} ^- *
|
2013-09-29 00:21:18 +04:00
|
|
|
?+ pum ~|(%unsupported !!)
|
2015-12-04 04:24:39 +03:00
|
|
|
$a src
|
|
|
|
$b (cue ((hard @) src))
|
|
|
|
$c (lore ((hard @) src))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ husk :: unprepatch
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {pum+umph dst+*} ^- *
|
2013-09-29 00:21:18 +04:00
|
|
|
?+ pum ~|(%unsupported !!)
|
2015-12-04 04:24:39 +03:00
|
|
|
$a dst
|
|
|
|
$b (jam dst)
|
|
|
|
$c (role ((hard (list @)) dst))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ lurk :: apply list patch
|
2015-12-04 04:24:39 +03:00
|
|
|
|* {hel+(list) rug+(urge)}
|
2013-09-29 00:21:18 +04:00
|
|
|
^+ hel
|
2015-12-04 04:24:39 +03:00
|
|
|
=+ war=`__(hel)`~
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ hel
|
|
|
|
?~ rug (flop war)
|
|
|
|
?- -.i.rug
|
2015-12-04 04:24:39 +03:00
|
|
|
{$&}
|
2013-09-29 00:21:18 +04:00
|
|
|
%= $
|
|
|
|
rug t.rug
|
|
|
|
hel (slag p.i.rug hel)
|
|
|
|
war (weld (flop (scag p.i.rug hel)) war)
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{$|}
|
2013-09-29 00:21:18 +04:00
|
|
|
%= $
|
|
|
|
rug t.rug
|
|
|
|
hel =+ gur=(flop p.i.rug)
|
|
|
|
|- ^+ hel
|
|
|
|
?~ gur hel
|
|
|
|
?>(&(?=(^ hel) =(i.gur i.hel)) $(hel t.hel, gur t.gur))
|
|
|
|
war (weld q.i.rug war)
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ lusk :: lcs to list patch
|
2015-12-04 04:24:39 +03:00
|
|
|
|* {hel+(list) hev+(list) lcs+(list)}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ^= rag
|
2015-12-04 04:24:39 +03:00
|
|
|
^- {_%({$& p+@ud} {$| p+__(lcs) q+__(lcs)})} :: XX translation
|
2013-09-29 00:21:18 +04:00
|
|
|
[%& 0]
|
2015-12-04 04:24:39 +03:00
|
|
|
=> .(rag [p=rag q=*(list __(rag))])
|
2013-09-29 00:21:18 +04:00
|
|
|
=< abet =< main
|
|
|
|
|%
|
|
|
|
++ abet =.(q.rag ?:(=([& 0] p.rag) q.rag [p.rag q.rag]) (flop q.rag))
|
|
|
|
++ done
|
2015-12-04 04:24:39 +03:00
|
|
|
|= new+__(p.rag)
|
2013-09-29 00:21:18 +04:00
|
|
|
^+ rag
|
|
|
|
?- -.p.rag
|
2015-12-04 04:24:39 +03:00
|
|
|
$| ?- -.new
|
|
|
|
{$|} [[%| (weld p.new p.p.rag) (weld q.new q.p.rag)] q.rag]
|
|
|
|
{$&} [new [p.rag q.rag]]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2015-12-04 04:24:39 +03:00
|
|
|
$& ?- -.new
|
|
|
|
{$|} [new ?:(=(0 p.p.rag) q.rag [p.rag q.rag])]
|
|
|
|
{$&} [[%& (add p.p.rag p.new)] q.rag]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ main
|
|
|
|
|- ^+ +
|
|
|
|
?~ hel
|
|
|
|
?~ hev
|
2015-12-08 05:04:19 +03:00
|
|
|
?>(?=($~ lcs) +)
|
2013-09-29 00:21:18 +04:00
|
|
|
$(hev t.hev, rag (done %| ~ [i.hev ~]))
|
|
|
|
?~ hev
|
|
|
|
$(hel t.hel, rag (done %| [i.hel ~] ~))
|
|
|
|
?~ lcs
|
|
|
|
+(rag (done %| (flop hel) (flop hev)))
|
|
|
|
?: =(i.hel i.lcs)
|
|
|
|
?: =(i.hev i.lcs)
|
|
|
|
$(lcs t.lcs, hel t.hel, hev t.hev, rag (done %& 1))
|
|
|
|
$(hev t.hev, rag (done %| ~ [i.hev ~]))
|
|
|
|
?: =(i.hev i.lcs)
|
|
|
|
$(hel t.hel, rag (done %| [i.hel ~] ~))
|
|
|
|
$(hel t.hel, hev t.hev, rag (done %| [i.hel ~] [i.hev ~]))
|
|
|
|
--
|
2014-04-16 03:47:57 +04:00
|
|
|
++ nude :: tree change
|
2015-12-04 04:24:39 +03:00
|
|
|
=< |= {a+* b+*} ^- {p+upas q+upas}
|
2014-10-29 02:13:02 +03:00
|
|
|
[p=(tred a b) q=(tred b a)]
|
2014-04-16 03:47:57 +04:00
|
|
|
|%
|
|
|
|
++ axes :: locs of nouns
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+@ b+*} ^- (map * axis)
|
|
|
|
=+ c=*(map * axis)
|
|
|
|
|- ^- (map * axis)
|
2014-04-16 03:47:57 +04:00
|
|
|
=> .(c (~(put by c) b a))
|
|
|
|
?@ b
|
|
|
|
c
|
|
|
|
%- ~(uni by c)
|
|
|
|
%- ~(uni by $(a (mul 2 a), b -.b))
|
|
|
|
$(a +((mul 2 a)), b +.b)
|
2014-06-03 09:07:32 +04:00
|
|
|
::
|
2014-04-16 03:47:57 +04:00
|
|
|
++ tred :: diff a->b
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+* b+*} ^- upas
|
|
|
|
=| c=(unit *)
|
2014-04-16 03:47:57 +04:00
|
|
|
=+ d=(axes 1 a)
|
|
|
|
|- ^- upas
|
|
|
|
=> .(c (~(get by d) b))
|
|
|
|
?~ c
|
|
|
|
?@ b
|
|
|
|
[%1 b]
|
|
|
|
=+ e=^-(upas [$(b -.b) $(b +.b)])
|
|
|
|
?- e
|
2015-12-04 04:24:39 +03:00
|
|
|
{{$1 *} {$1 *}} [%1 [p.p.e p.q.e]]
|
2014-04-16 03:47:57 +04:00
|
|
|
* e
|
|
|
|
==
|
|
|
|
[%0 u.c]
|
|
|
|
--
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2014-04-12 04:02:10 +04:00
|
|
|
:: section 2eW, lite number theory ::
|
|
|
|
::
|
2015-10-27 01:26:49 +03:00
|
|
|
++ egcd !: :: schneier's egcd
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+@ b+@}
|
2014-04-12 04:02:10 +04:00
|
|
|
=+ si
|
|
|
|
=+ [c=(sun a) d=(sun b)]
|
|
|
|
=+ [u=[c=(sun 1) d=--0] v=[c=--0 d=(sun 1)]]
|
2015-12-04 04:24:39 +03:00
|
|
|
|- ^- {d+@ u+@s v+@s}
|
2014-04-12 04:02:10 +04:00
|
|
|
?: =(--0 c)
|
|
|
|
[(abs d) d.u d.v]
|
|
|
|
:: ?> ?& =(c (sum (pro (sun a) c.u) (pro (sun b) c.v)))
|
|
|
|
:: =(d (sum (pro (sun a) d.u) (pro (sun b) d.v)))
|
|
|
|
:: ==
|
|
|
|
=+ q=(fra d c)
|
|
|
|
%= $
|
|
|
|
c (dif d (pro q c))
|
|
|
|
d c
|
|
|
|
u [(dif d.u (pro q c.u)) c.u]
|
|
|
|
v [(dif d.v (pro q c.v)) c.v]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ pram :: rabin-miller
|
2015-12-04 04:24:39 +03:00
|
|
|
|= a+@ ^- ?
|
2014-04-12 04:02:10 +04:00
|
|
|
?: ?| =(0 (end 0 1 a))
|
|
|
|
=(1 a)
|
|
|
|
=+ b=1
|
|
|
|
|- ^- ?
|
|
|
|
?: =(512 b)
|
|
|
|
|
|
|
|
|
?|(=+(c=+((mul 2 b)) &(!=(a c) =(a (mul c (div a c))))) $(b +(b)))
|
|
|
|
==
|
|
|
|
|
|
|
|
|
=+ ^= b
|
|
|
|
=+ [s=(dec a) t=0]
|
2015-12-04 04:24:39 +03:00
|
|
|
|- ^- {s+@ t+@}
|
2014-04-12 04:02:10 +04:00
|
|
|
?: =(0 (end 0 1 s))
|
|
|
|
$(s (rsh 0 1 s), t +(t))
|
|
|
|
[s t]
|
|
|
|
?> =((mul s.b (bex t.b)) (dec a))
|
|
|
|
=+ c=0
|
|
|
|
|- ^- ?
|
|
|
|
?: =(c 64)
|
|
|
|
&
|
|
|
|
=+ d=(~(raw og (add c a)) (met 0 a))
|
|
|
|
=+ e=(~(exp fo a) s.b d)
|
|
|
|
?& ?| =(1 e)
|
|
|
|
=+ f=0
|
|
|
|
|- ^- ?
|
|
|
|
?: =(e (dec a))
|
|
|
|
&
|
|
|
|
?: =(f (dec t.b))
|
|
|
|
|
|
|
|
|
$(e (~(pro fo a) e e), f +(f))
|
|
|
|
==
|
|
|
|
$(c +(c))
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ ramp :: make r-m prime
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+@ b+(list @) c+@} ^- @ux :: {bits snags seed}
|
2014-04-12 04:02:10 +04:00
|
|
|
=> .(c (shas %ramp c))
|
2014-10-31 20:56:33 +03:00
|
|
|
=+ d=*@
|
2014-04-12 04:02:10 +04:00
|
|
|
|-
|
|
|
|
?: =((mul 100 a) d)
|
|
|
|
~|(%ar-ramp !!)
|
|
|
|
=+ e=(~(raw og c) a)
|
2014-10-28 01:12:02 +03:00
|
|
|
?: &((levy b |=(f=@ !=(1 (mod e f)))) (pram e))
|
2014-04-12 04:02:10 +04:00
|
|
|
e
|
|
|
|
$(c +(c), d (shax d))
|
|
|
|
::
|
|
|
|
++ fo :: modulo prime
|
2015-12-04 04:24:39 +03:00
|
|
|
|_ a+@
|
2014-04-12 04:02:10 +04:00
|
|
|
++ dif
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {b+@ c+@}
|
2014-04-12 04:02:10 +04:00
|
|
|
(sit (sub (add a b) (sit c)))
|
|
|
|
::
|
|
|
|
++ exp
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {b+@ c+@}
|
2014-04-12 04:02:10 +04:00
|
|
|
?: =(0 b)
|
|
|
|
1
|
|
|
|
=+ d=$(b (rsh 0 1 b))
|
|
|
|
=+ e=(pro d d)
|
|
|
|
?:(=(0 (end 0 1 b)) e (pro c e))
|
|
|
|
::
|
|
|
|
++ fra
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {b+@ c+@}
|
2014-04-12 04:02:10 +04:00
|
|
|
(pro b (inv c))
|
|
|
|
::
|
|
|
|
++ inv
|
2015-12-04 04:24:39 +03:00
|
|
|
|= b+@
|
2014-04-12 04:02:10 +04:00
|
|
|
=+ c=(dul:si u:(egcd b a) a)
|
|
|
|
c
|
|
|
|
::
|
|
|
|
++ pro
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {b+@ c+@}
|
2014-04-12 04:02:10 +04:00
|
|
|
(sit (mul b c))
|
|
|
|
::
|
|
|
|
++ sit
|
2015-12-04 04:24:39 +03:00
|
|
|
|= b+@
|
2014-04-12 04:02:10 +04:00
|
|
|
(mod b a)
|
|
|
|
::
|
|
|
|
++ sum
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {b+@ c+@}
|
2014-04-12 04:02:10 +04:00
|
|
|
(sit (add b c))
|
|
|
|
--
|
2014-04-18 05:26:47 +04:00
|
|
|
::
|
|
|
|
++ ga :: GF (bex p.a)
|
2015-12-04 04:24:39 +03:00
|
|
|
|= a+{p+@ q+@ r+@} :: dim poly gen
|
2014-04-18 05:26:47 +04:00
|
|
|
=+ si=(bex p.a)
|
|
|
|
=+ ma=(dec si)
|
|
|
|
=> |%
|
|
|
|
++ dif :: add and sub
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {b+@ c+@}
|
2014-05-07 02:49:56 +04:00
|
|
|
~| [%dif-ga a]
|
|
|
|
?> &((lth b si) (lth c si))
|
|
|
|
(mix b c)
|
2014-04-18 05:26:47 +04:00
|
|
|
::
|
2014-05-07 02:49:56 +04:00
|
|
|
++ dub :: mul by x
|
2015-12-04 04:24:39 +03:00
|
|
|
|= b+@
|
2014-05-07 02:49:56 +04:00
|
|
|
~| [%dub-ga a]
|
|
|
|
?> (lth b si)
|
2014-04-18 05:26:47 +04:00
|
|
|
?: =(1 (cut 0 [(dec p.a) 1] b))
|
2014-05-07 02:49:56 +04:00
|
|
|
(dif (sit q.a) (sit (lsh 0 1 b)))
|
2014-04-18 05:26:47 +04:00
|
|
|
(lsh 0 1 b)
|
|
|
|
::
|
2014-05-07 02:49:56 +04:00
|
|
|
++ pro :: slow multiply
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {b+@ c+@}
|
2014-04-18 05:26:47 +04:00
|
|
|
?: =(0 b)
|
|
|
|
0
|
|
|
|
?: =(1 (dis 1 b))
|
|
|
|
(dif c $(b (rsh 0 1 b), c (dub c)))
|
|
|
|
$(b (rsh 0 1 b), c (dub c))
|
|
|
|
::
|
|
|
|
++ toe :: exp/log tables
|
|
|
|
=+ ^= nu
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {b+@ c+@}
|
|
|
|
^- (map @ @)
|
|
|
|
=+ d=*(map @ @)
|
2014-04-18 05:26:47 +04:00
|
|
|
|-
|
|
|
|
?: =(0 c)
|
|
|
|
d
|
|
|
|
%= $
|
|
|
|
c (dec c)
|
|
|
|
d (~(put by d) c b)
|
|
|
|
==
|
|
|
|
=+ [p=(nu 0 (bex p.a)) q=(nu ma ma)]
|
|
|
|
=+ [b=1 c=0]
|
2015-12-04 04:24:39 +03:00
|
|
|
|- ^- {p+(map @ @) q+(map @ @)}
|
2014-04-18 05:26:47 +04:00
|
|
|
?: =(ma c)
|
|
|
|
[(~(put by p) c b) q]
|
|
|
|
%= $
|
|
|
|
b (pro r.a b)
|
|
|
|
c +(c)
|
|
|
|
p (~(put by p) c b)
|
|
|
|
q (~(put by q) b c)
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ sit :: reduce
|
2015-12-04 04:24:39 +03:00
|
|
|
|= b+@
|
2014-04-18 05:26:47 +04:00
|
|
|
(mod b (bex p.a))
|
|
|
|
--
|
|
|
|
=+ toe
|
|
|
|
|%
|
|
|
|
++ fra :: divide
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {b+@ c+@}
|
2014-04-18 05:26:47 +04:00
|
|
|
(pro b (inv c))
|
|
|
|
::
|
|
|
|
++ inv :: invert
|
2015-12-04 04:24:39 +03:00
|
|
|
|= b+@
|
2014-05-07 02:49:56 +04:00
|
|
|
~| [%inv-ga a]
|
2014-04-18 05:26:47 +04:00
|
|
|
=+ c=(~(get by q) b)
|
2014-05-07 02:49:56 +04:00
|
|
|
?~ c !!
|
2014-04-18 05:26:47 +04:00
|
|
|
=+ d=(~(get by p) (sub ma u.c))
|
|
|
|
(need d)
|
|
|
|
::
|
|
|
|
++ pow :: exponent
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {b+@ c+@}
|
2014-04-18 05:26:47 +04:00
|
|
|
=+ [d=1 e=c f=0]
|
|
|
|
|-
|
|
|
|
?: =(p.a f)
|
|
|
|
d
|
|
|
|
?: =(1 (cut 0 [f 1] b))
|
|
|
|
$(d (pro d e), e (pro e e), f +(f))
|
|
|
|
$(e (pro e e), f +(f))
|
|
|
|
::
|
|
|
|
++ pro :: multiply
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {b+@ c+@}
|
2014-05-07 02:49:56 +04:00
|
|
|
~| [%pro-ga a]
|
2014-04-18 05:26:47 +04:00
|
|
|
=+ d=(~(get by q) b)
|
|
|
|
?~ d 0
|
|
|
|
=+ e=(~(get by q) c)
|
|
|
|
?~ e 0
|
|
|
|
=+ f=(~(get by p) (mod (add u.d u.e) ma))
|
|
|
|
(need f)
|
|
|
|
--
|
2014-04-12 04:02:10 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2014-04-18 05:26:47 +04:00
|
|
|
:: section 2eX, jetted crypto ::
|
2014-04-11 05:05:59 +04:00
|
|
|
::
|
2014-04-18 05:26:47 +04:00
|
|
|
++ aesc :: AES-256
|
2014-04-19 05:33:56 +04:00
|
|
|
~% %aesc + ~
|
|
|
|
|%
|
|
|
|
++ en :: ECB enc
|
|
|
|
~/ %en
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+@I b+@H} ^- @uxH
|
2014-04-19 05:33:56 +04:00
|
|
|
=+ ahem
|
|
|
|
(be & (ex a) b)
|
|
|
|
++ de :: ECB dec
|
|
|
|
~/ %de
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+@I b+@H} ^- @uxH
|
2014-04-19 05:33:56 +04:00
|
|
|
=+ ahem
|
|
|
|
(be | (ix (ex a)) b)
|
|
|
|
--
|
|
|
|
++ ahem :: AES helpers
|
2014-04-26 00:30:09 +04:00
|
|
|
:: XX should be in aesc, isn't for performance reasons
|
2014-04-18 05:26:47 +04:00
|
|
|
=>
|
|
|
|
=+ =+ [gr=(ga 8 0x11b 3) few==>(fe .(a 5))]
|
|
|
|
=+ [pro=pro.gr dif=dif.gr pow=pow.gr ror=ror.few]
|
|
|
|
[pro=pro dif=dif pow=pow ror=ror nnk=8 nnb=4 nnr=14]
|
|
|
|
=> |%
|
|
|
|
++ cipa :: AES params
|
|
|
|
$_ ^? |%
|
2015-12-08 04:46:28 +03:00
|
|
|
++ co *{p+@ q+@ r+@ s+@} :: col coefs
|
|
|
|
++ ix |+(a+@ *@) :: key index
|
|
|
|
++ ro *{p+@ q+@ r+@ s+@} :: row shifts
|
2014-10-31 20:56:33 +03:00
|
|
|
++ su *@ :: s-box
|
2014-04-18 05:26:47 +04:00
|
|
|
--
|
|
|
|
--
|
|
|
|
|%
|
2014-05-01 02:54:57 +04:00
|
|
|
++ pen :: encrypt
|
2014-04-18 05:26:47 +04:00
|
|
|
^- cipa
|
|
|
|
|%
|
|
|
|
++ co [0x2 0x3 1 1]
|
2015-12-04 04:24:39 +03:00
|
|
|
++ ix |+(a+@ a)
|
2014-04-18 05:26:47 +04:00
|
|
|
++ ro [0 1 2 3]
|
|
|
|
++ su 0x16bb.54b0.0f2d.9941.6842.e6bf.0d89.a18c.
|
|
|
|
df28.55ce.e987.1e9b.948e.d969.1198.f8e1.
|
|
|
|
9e1d.c186.b957.3561.0ef6.0348.66b5.3e70.
|
|
|
|
8a8b.bd4b.1f74.dde8.c6b4.a61c.2e25.78ba.
|
|
|
|
08ae.7a65.eaf4.566c.a94e.d58d.6d37.c8e7.
|
|
|
|
79e4.9591.62ac.d3c2.5c24.0649.0a3a.32e0.
|
|
|
|
db0b.5ede.14b8.ee46.8890.2a22.dc4f.8160.
|
|
|
|
7319.5d64.3d7e.a7c4.1744.975f.ec13.0ccd.
|
|
|
|
d2f3.ff10.21da.b6bc.f538.9d92.8f40.a351.
|
|
|
|
a89f.3c50.7f02.f945.8533.4d43.fbaa.efd0.
|
|
|
|
cf58.4c4a.39be.cb6a.5bb1.fc20.ed00.d153.
|
|
|
|
842f.e329.b3d6.3b52.a05a.6e1b.1a2c.8309.
|
|
|
|
75b2.27eb.e280.1207.9a05.9618.c323.c704.
|
|
|
|
1531.d871.f1e5.a534.ccf7.3f36.2693.fdb7.
|
|
|
|
c072.a49c.afa2.d4ad.f047.59fa.7dc9.82ca.
|
|
|
|
76ab.d7fe.2b67.0130.c56f.6bf2.7b77.7c63
|
|
|
|
--
|
|
|
|
::
|
2014-05-01 02:54:57 +04:00
|
|
|
++ pin :: decrypt
|
2014-04-18 05:26:47 +04:00
|
|
|
^- cipa
|
|
|
|
|%
|
|
|
|
++ co [0xe 0xb 0xd 0x9]
|
2015-12-04 04:24:39 +03:00
|
|
|
++ ix |+(a+@ (sub nnr a))
|
2014-04-18 05:26:47 +04:00
|
|
|
++ ro [0 3 2 1]
|
|
|
|
++ su 0x7d0c.2155.6314.69e1.26d6.77ba.7e04.2b17.
|
|
|
|
6199.5383.3cbb.ebc8.b0f5.2aae.4d3b.e0a0.
|
|
|
|
ef9c.c993.9f7a.e52d.0d4a.b519.a97f.5160.
|
|
|
|
5fec.8027.5910.12b1.31c7.0788.33a8.dd1f.
|
|
|
|
f45a.cd78.fec0.db9a.2079.d2c6.4b3e.56fc.
|
|
|
|
1bbe.18aa.0e62.b76f.89c5.291d.711a.f147.
|
|
|
|
6edf.751c.e837.f9e2.8535.ade7.2274.ac96.
|
|
|
|
73e6.b4f0.cecf.f297.eadc.674f.4111.913a.
|
|
|
|
6b8a.1301.03bd.afc1.020f.3fca.8f1e.2cd0.
|
|
|
|
0645.b3b8.0558.e4f7.0ad3.bc8c.00ab.d890.
|
|
|
|
849d.8da7.5746.155e.dab9.edfd.5048.706c.
|
|
|
|
92b6.655d.cc5c.a4d4.1698.6886.64f6.f872.
|
|
|
|
25d1.8b6d.49a2.5b76.b224.d928.66a1.2e08.
|
|
|
|
4ec3.fa42.0b95.4cee.3d23.c2a6.3294.7b54.
|
|
|
|
cbe9.dec4.4443.8e34.87ff.2f9b.8239.e37c.
|
|
|
|
fbd7.f381.9ea3.40bf.38a5.3630.d56a.0952
|
|
|
|
--
|
|
|
|
::
|
|
|
|
++ mcol
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+(list @) b+{p+@ q+@ r+@ s+@}} ^- (list @)
|
2014-10-31 20:56:33 +03:00
|
|
|
=+ c=[p=*@ q=*@ r=*@ s=*@]
|
2015-12-04 04:24:39 +03:00
|
|
|
|- ^- (list @)
|
2014-04-18 05:26:47 +04:00
|
|
|
?~ a ~
|
|
|
|
=> .(p.c (cut 3 [0 1] i.a))
|
|
|
|
=> .(q.c (cut 3 [1 1] i.a))
|
|
|
|
=> .(r.c (cut 3 [2 1] i.a))
|
|
|
|
=> .(s.c (cut 3 [3 1] i.a))
|
|
|
|
:_ $(a t.a)
|
2014-04-19 03:04:00 +04:00
|
|
|
%+ rep 3
|
2014-04-26 00:23:18 +04:00
|
|
|
%+ turn
|
|
|
|
%- limo
|
|
|
|
:~ [[p.c p.b] [q.c q.b] [r.c r.b] [s.c s.b]]
|
|
|
|
[[p.c s.b] [q.c p.b] [r.c q.b] [s.c r.b]]
|
|
|
|
[[p.c r.b] [q.c s.b] [r.c p.b] [s.c q.b]]
|
|
|
|
[[p.c q.b] [q.c r.b] [r.c s.b] [s.c p.b]]
|
|
|
|
==
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+{@ @} b+{@ @} c+{@ @} d+{@ @}}
|
2014-04-26 00:23:18 +04:00
|
|
|
:(dif (pro a) (pro b) (pro c) (pro d))
|
2014-04-18 05:26:47 +04:00
|
|
|
::
|
|
|
|
++ pode :: explode to block
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+bloq b+@ c+@} ^- (list @)
|
2014-04-18 05:26:47 +04:00
|
|
|
=+ d=(rip a c)
|
|
|
|
=+ m=(met a c)
|
|
|
|
|-
|
|
|
|
?: =(m b)
|
|
|
|
d
|
|
|
|
$(m +(m), d (weld d (limo [0 ~])))
|
|
|
|
++ sube :: s-box word
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+@ b+@} ^- @
|
2014-04-18 05:26:47 +04:00
|
|
|
(rep 3 (turn (pode 3 4 a) |=(c=@ (cut 3 [c 1] b))))
|
|
|
|
--
|
2014-04-19 05:33:56 +04:00
|
|
|
|%
|
2014-04-18 05:26:47 +04:00
|
|
|
++ be :: block cipher
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+? b+@ c+@H} ^- @uxH
|
2014-04-18 05:26:47 +04:00
|
|
|
~| %be-aesc
|
|
|
|
=> %= .
|
|
|
|
+
|
|
|
|
=> +
|
|
|
|
|%
|
|
|
|
++ ankh
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+cipa b+@ c+@}
|
2014-04-18 05:26:47 +04:00
|
|
|
(pode 5 nnb (cut 5 [(mul (ix.a b) nnb) nnb] c))
|
|
|
|
++ sark
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {c+(list @) d+(list @)} ^- (list @)
|
2014-04-18 05:26:47 +04:00
|
|
|
?~ c ~
|
|
|
|
?~ d !!
|
|
|
|
[(mix i.c i.d) $(c t.c, d t.d)]
|
|
|
|
++ srow
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+cipa b+(list @)} ^- (list @)
|
2014-04-18 05:26:47 +04:00
|
|
|
=+ [c=0 d=~ e=ro.a]
|
|
|
|
|-
|
|
|
|
?: =(c nnb)
|
|
|
|
d
|
|
|
|
:_ $(c +(c))
|
2014-04-19 03:04:00 +04:00
|
|
|
%+ rep 3
|
|
|
|
%+ turn
|
|
|
|
(limo [0 p.e] [1 q.e] [2 r.e] [3 s.e] ~)
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {f+@ g+@}
|
2014-04-19 03:04:00 +04:00
|
|
|
(cut 3 [f 1] (snag (mod (add g c) nnb) b))
|
2014-04-18 05:26:47 +04:00
|
|
|
++ subs
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+cipa b+(list @)} ^- (list @)
|
2014-04-18 05:26:47 +04:00
|
|
|
?~ b ~
|
|
|
|
[(sube i.b su.a) $(b t.b)]
|
|
|
|
--
|
|
|
|
==
|
2014-05-01 02:54:57 +04:00
|
|
|
=+ [d=?:(a pen pin) e=(pode 5 nnb c) f=1]
|
2014-04-18 05:26:47 +04:00
|
|
|
=> .(e (sark e (ankh d 0 b)))
|
|
|
|
|-
|
|
|
|
?. =(nnr f)
|
|
|
|
=> .(e (subs d e))
|
|
|
|
=> .(e (srow d e))
|
|
|
|
=> .(e (mcol e co.d))
|
|
|
|
=> .(e (sark e (ankh d f b)))
|
|
|
|
$(f +(f))
|
|
|
|
=> .(e (subs d e))
|
|
|
|
=> .(e (srow d e))
|
|
|
|
=> .(e (sark e (ankh d nnr b)))
|
|
|
|
(rep 5 e)
|
2015-12-04 04:24:39 +03:00
|
|
|
::
|
2014-04-18 05:26:47 +04:00
|
|
|
++ ex :: key expand
|
2015-12-04 04:24:39 +03:00
|
|
|
|= a+@I ^- @
|
2014-05-01 02:54:57 +04:00
|
|
|
=+ [b=a c=0 d=su:pen i=nnk]
|
2014-04-18 05:26:47 +04:00
|
|
|
|-
|
|
|
|
?: =(i (mul nnb +(nnr)))
|
|
|
|
b
|
|
|
|
=> .(c (cut 5 [(dec i) 1] b))
|
|
|
|
=> ?: =(0 (mod i nnk))
|
|
|
|
=> .(c (ror 3 1 c))
|
|
|
|
=> .(c (sube c d))
|
|
|
|
.(c (mix c (pow (dec (div i nnk)) 2)))
|
|
|
|
?: &((gth nnk 6) =(4 (mod i nnk)))
|
|
|
|
.(c (sube c d))
|
|
|
|
.
|
|
|
|
=> .(c (mix c (cut 5 [(sub i nnk) 1] b)))
|
2014-04-19 01:58:51 +04:00
|
|
|
=> .(b (can 5 [i b] [1 c] ~))
|
2014-04-18 05:26:47 +04:00
|
|
|
$(i +(i))
|
2015-12-04 04:24:39 +03:00
|
|
|
::
|
2014-04-18 05:26:47 +04:00
|
|
|
++ ix :: key expand, inv
|
2015-12-04 04:24:39 +03:00
|
|
|
|= a+@ ^- @
|
2014-10-31 20:56:33 +03:00
|
|
|
=+ [i=1 j=*@ b=*@ c=co:pin]
|
2014-04-18 05:26:47 +04:00
|
|
|
|-
|
|
|
|
?: =(nnr i)
|
|
|
|
a
|
|
|
|
=> .(b (cut 7 [i 1] a))
|
|
|
|
=> .(b (rep 5 (mcol (pode 5 4 b) c)))
|
|
|
|
=> .(j (sub nnr i))
|
|
|
|
%= $
|
|
|
|
i +(i)
|
|
|
|
a
|
|
|
|
%+ can 7
|
|
|
|
:~ [i (cut 7 [0 i] a)]
|
|
|
|
[1 b]
|
|
|
|
[j (cut 7 [+(i) j] a)]
|
|
|
|
==
|
|
|
|
==
|
|
|
|
--
|
2014-05-09 01:43:55 +04:00
|
|
|
::
|
|
|
|
++ curt :: curve25519
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+@ b+@}
|
2014-05-09 01:43:55 +04:00
|
|
|
=> %= .
|
|
|
|
+
|
|
|
|
=> +
|
|
|
|
=+ =+ [p=486.662 q=(sub (bex 255) 19)]
|
|
|
|
=+ fq=~(. fo q)
|
|
|
|
[p=p q=q fq=fq]
|
|
|
|
|%
|
|
|
|
++ cla
|
2015-12-04 04:24:39 +03:00
|
|
|
|= raw+@
|
2014-05-09 01:43:55 +04:00
|
|
|
=+ low=(dis 248 (cut 3 [0 1] raw))
|
|
|
|
=+ hih=(con 64 (dis 127 (cut 3 [31 1] raw)))
|
|
|
|
=+ mid=(cut 3 [1 30] raw)
|
|
|
|
(can 3 [[1 low] [30 mid] [1 hih] ~])
|
2015-12-04 04:24:39 +03:00
|
|
|
++ sqr |=(a+@ (mul a a))
|
|
|
|
++ inv |=(a+@ (~(exp fo q) (sub q 2) a))
|
2014-05-09 01:43:55 +04:00
|
|
|
++ cad
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {n+{x+@ z+@} m+{x+@ z+@} d+{x+@ z+@}}
|
2014-05-09 01:43:55 +04:00
|
|
|
=+ ^= xx
|
|
|
|
;: mul 4 z.d
|
|
|
|
%- sqr %- abs:si
|
|
|
|
%+ dif:si
|
|
|
|
(sun:si (mul x.m x.n))
|
|
|
|
(sun:si (mul z.m z.n))
|
|
|
|
==
|
|
|
|
=+ ^= zz
|
|
|
|
;: mul 4 x.d
|
|
|
|
%- sqr %- abs:si
|
|
|
|
%+ dif:si
|
|
|
|
(sun:si (mul x.m z.n))
|
|
|
|
(sun:si (mul z.m x.n))
|
|
|
|
==
|
|
|
|
[(sit.fq xx) (sit.fq zz)]
|
|
|
|
++ cub
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {x+@ z+@}
|
2014-05-09 01:43:55 +04:00
|
|
|
=+ ^= xx
|
|
|
|
%+ mul
|
|
|
|
%- sqr %- abs:si
|
|
|
|
(dif:si (sun:si x) (sun:si z))
|
|
|
|
(sqr (add x z))
|
|
|
|
=+ ^= zz
|
|
|
|
;: mul 4 x z
|
|
|
|
:(add (sqr x) :(mul p x z) (sqr z))
|
|
|
|
==
|
|
|
|
[(sit.fq xx) (sit.fq zz)]
|
|
|
|
--
|
|
|
|
==
|
|
|
|
=+ one=[b 1]
|
|
|
|
=+ i=253
|
|
|
|
=+ r=one
|
|
|
|
=+ s=(cub one)
|
|
|
|
|-
|
|
|
|
?: =(i 0)
|
|
|
|
=+ x=(cub r)
|
|
|
|
(sit.fq (mul -.x (inv +.x)))
|
|
|
|
=+ m=(rsh 0 i a)
|
|
|
|
?: =(0 (mod m 2))
|
|
|
|
$(i (dec i), s (cad r s one), r (cub r))
|
|
|
|
$(i (dec i), r (cad r s one), s (cub s))
|
|
|
|
::
|
2014-04-18 05:26:47 +04:00
|
|
|
++ ed :: ed25519
|
2014-04-12 04:02:10 +04:00
|
|
|
=>
|
|
|
|
=+ =+ [b=256 q=(sub (bex 255) 19)]
|
|
|
|
=+ fq=~(. fo q)
|
|
|
|
=+ ^= l
|
|
|
|
%+ add
|
|
|
|
(bex 252)
|
|
|
|
27.742.317.777.372.353.535.851.937.790.883.648.493
|
|
|
|
=+ d=(dif.fq 0 (fra.fq 121.665 121.666))
|
|
|
|
=+ ii=(exp.fq (div (dec q) 4) 2)
|
|
|
|
[b=b q=q fq=fq l=l d=d ii=ii]
|
|
|
|
~% %coed +> ~
|
|
|
|
|%
|
2015-12-04 04:24:39 +03:00
|
|
|
++ norm |=(x+@ ?:(=(0 (mod x 2)) x (sub q x)))
|
2014-04-12 04:02:10 +04:00
|
|
|
::
|
|
|
|
++ xrec :: recover x-coord
|
2015-12-04 04:24:39 +03:00
|
|
|
|= y+@ ^- @
|
2014-04-12 04:02:10 +04:00
|
|
|
=+ ^= xx
|
|
|
|
%+ mul (dif.fq (mul y y) 1)
|
|
|
|
(inv.fq +(:(mul d y y)))
|
|
|
|
=+ x=(exp.fq (div (add 3 q) 8) xx)
|
|
|
|
?: !=(0 (dif.fq (mul x x) (sit.fq xx)))
|
|
|
|
(norm (pro.fq x ii))
|
|
|
|
(norm x)
|
|
|
|
::
|
|
|
|
++ ward :: edwards multiply
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {pp+{@ @} qq+{@ @}} ^- {@ @}
|
2014-04-12 04:02:10 +04:00
|
|
|
=+ dp=:(pro.fq d -.pp -.qq +.pp +.qq)
|
|
|
|
=+ ^= xt
|
|
|
|
%+ pro.fq
|
|
|
|
%+ sum.fq
|
|
|
|
(pro.fq -.pp +.qq)
|
|
|
|
(pro.fq -.qq +.pp)
|
|
|
|
(inv.fq (sum.fq 1 dp))
|
|
|
|
=+ ^= yt
|
|
|
|
%+ pro.fq
|
|
|
|
%+ sum.fq
|
|
|
|
(pro.fq +.pp +.qq)
|
|
|
|
(pro.fq -.pp -.qq)
|
|
|
|
(inv.fq (dif.fq 1 dp))
|
|
|
|
[xt yt]
|
|
|
|
::
|
|
|
|
++ scam :: scalar multiply
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {pp+{@ @} e+@} ^- {@ @}
|
2014-04-12 04:02:10 +04:00
|
|
|
?: =(0 e)
|
|
|
|
[0 1]
|
|
|
|
=+ qq=$(e (div e 2))
|
|
|
|
=> .(qq (ward qq qq))
|
|
|
|
?: =(1 (dis 1 e))
|
|
|
|
(ward qq pp)
|
|
|
|
qq
|
|
|
|
::
|
|
|
|
++ etch :: encode point
|
2015-12-04 04:24:39 +03:00
|
|
|
|= pp+{@ @} ^- @
|
2014-04-12 04:02:10 +04:00
|
|
|
(can 0 ~[[(sub b 1) +.pp] [1 (dis 1 -.pp)]])
|
|
|
|
::
|
|
|
|
++ curv :: point on curve?
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {x+@ y+@} ^- ?
|
2014-04-12 04:02:10 +04:00
|
|
|
.= 0
|
|
|
|
%+ dif.fq
|
|
|
|
%+ sum.fq
|
|
|
|
(pro.fq (sub q (sit.fq x)) x)
|
|
|
|
(pro.fq y y)
|
|
|
|
(sum.fq 1 :(pro.fq d x x y y))
|
|
|
|
::
|
|
|
|
++ deco :: decode point
|
2015-12-04 04:24:39 +03:00
|
|
|
|= s+@ ^- (unit {@ @})
|
2014-04-12 04:02:10 +04:00
|
|
|
=+ y=(cut 0 [0 (dec b)] s)
|
|
|
|
=+ si=(cut 0 [(dec b) 1] s)
|
|
|
|
=+ x=(xrec y)
|
|
|
|
=> .(x ?:(!=(si (dis 1 x)) (sub q x) x))
|
|
|
|
=+ pp=[x y]
|
|
|
|
?. (curv pp)
|
|
|
|
~
|
|
|
|
[~ pp]
|
|
|
|
::
|
|
|
|
++ bb
|
|
|
|
=+ bby=(pro.fq 4 (inv.fq 5))
|
2015-12-04 04:24:39 +03:00
|
|
|
[(xrec bby) bby]
|
2014-04-12 04:02:10 +04:00
|
|
|
::
|
|
|
|
--
|
|
|
|
~% %ed + ~
|
2014-04-11 05:05:59 +04:00
|
|
|
|%
|
2015-06-20 06:01:09 +03:00
|
|
|
++ puck :: public key
|
2014-04-12 04:02:10 +04:00
|
|
|
~/ %puck
|
2015-12-04 04:24:39 +03:00
|
|
|
|= sk+@I ^- @
|
2014-04-20 01:17:35 +04:00
|
|
|
?: (gth (met 3 sk) 32) !!
|
2014-04-11 05:05:59 +04:00
|
|
|
=+ h=(shal (rsh 0 3 b) sk)
|
|
|
|
=+ ^= a
|
|
|
|
%+ add
|
|
|
|
(bex (sub b 2))
|
|
|
|
(lsh 0 3 (cut 0 [3 (sub b 5)] h))
|
|
|
|
=+ aa=(scam bb a)
|
|
|
|
(etch aa)
|
2015-06-20 06:01:09 +03:00
|
|
|
++ suck :: keypair from seed
|
2015-12-04 04:24:39 +03:00
|
|
|
|= se+@I ^- @uJ
|
2014-04-17 07:15:49 +04:00
|
|
|
=+ pu=(puck se)
|
|
|
|
(can 0 ~[[b se] [b pu]])
|
2014-04-11 05:05:59 +04:00
|
|
|
::
|
2015-06-20 06:01:09 +03:00
|
|
|
++ sign :: certify
|
2014-04-12 04:02:10 +04:00
|
|
|
~/ %sign
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {m+@ se+@} ^- @
|
2014-04-17 07:15:49 +04:00
|
|
|
=+ sk=(suck se)
|
|
|
|
=+ pk=(cut 0 [b b] sk)
|
2014-04-11 05:05:59 +04:00
|
|
|
=+ h=(shal (rsh 0 3 b) sk)
|
|
|
|
=+ ^= a
|
|
|
|
%+ add
|
|
|
|
(bex (sub b 2))
|
|
|
|
(lsh 0 3 (cut 0 [3 (sub b 5)] h))
|
|
|
|
=+ ^= r
|
|
|
|
=+ hm=(cut 0 [b b] h)
|
|
|
|
=+ ^= i
|
|
|
|
%+ can 0
|
|
|
|
:~ [b hm]
|
|
|
|
[(met 0 m) m]
|
|
|
|
==
|
|
|
|
(shaz i)
|
|
|
|
=+ rr=(scam bb r)
|
|
|
|
=+ ^= ss
|
|
|
|
=+ er=(etch rr)
|
|
|
|
=+ ^= ha
|
|
|
|
%+ can 0
|
|
|
|
:~ [b er]
|
|
|
|
[b pk]
|
|
|
|
[(met 0 m) m]
|
|
|
|
==
|
|
|
|
(~(sit fo l) (add r (mul (shaz ha) a)))
|
|
|
|
(can 0 ~[[b (etch rr)] [b ss]])
|
|
|
|
::
|
2015-06-20 06:01:09 +03:00
|
|
|
++ veri :: validate
|
2014-04-13 06:59:02 +04:00
|
|
|
~/ %veri
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {s+@ m+@ pk+@} ^- ?
|
2014-04-11 05:05:59 +04:00
|
|
|
?: (gth (div b 4) (met 3 s)) |
|
|
|
|
?: (gth (div b 8) (met 3 pk)) |
|
2014-04-30 23:59:36 +04:00
|
|
|
=+ cb=(rsh 0 3 b)
|
2014-04-11 05:05:59 +04:00
|
|
|
=+ rr=(deco (cut 0 [0 b] s))
|
|
|
|
?~ rr |
|
|
|
|
=+ aa=(deco pk)
|
|
|
|
?~ aa |
|
|
|
|
=+ ss=(cut 0 [b b] s)
|
2014-04-30 23:59:36 +04:00
|
|
|
=+ ha=(can 3 ~[[cb (etch u.rr)] [cb pk] [(met 3 m) m]])
|
2014-04-11 05:05:59 +04:00
|
|
|
=+ h=(shaz ha)
|
|
|
|
=((scam bb ss) (ward u.rr (scam u.aa h)))
|
|
|
|
::
|
|
|
|
--
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
|
|
|
++ scr :: scrypt
|
|
|
|
~% %scr + ~
|
|
|
|
|%
|
2015-06-20 06:01:09 +03:00
|
|
|
++ sal
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {x+@ r+@} :: salsa20 hash
|
2015-06-20 06:01:09 +03:00
|
|
|
?> =((mod r 2) 0) :: with r rounds
|
|
|
|
=+ few==>(fe .(a 5))
|
|
|
|
=+ ^= rot
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+@ b+@}
|
2015-06-20 06:01:09 +03:00
|
|
|
(mix (end 5 1 (lsh 0 a b)) (rsh 0 (sub 32 a) b))
|
|
|
|
=+ ^= lea
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+@ b+@}
|
2015-06-20 06:01:09 +03:00
|
|
|
(net:few (sum:few (net:few a) (net:few b)))
|
|
|
|
=> |%
|
|
|
|
++ qr :: quarterround
|
2015-12-04 04:24:39 +03:00
|
|
|
|= y+{@ @ @ @ $~}
|
2015-06-20 06:01:09 +03:00
|
|
|
=+ zb=(mix &2.y (rot 7 (sum:few &1.y &4.y)))
|
|
|
|
=+ zc=(mix &3.y (rot 9 (sum:few zb &1.y)))
|
|
|
|
=+ zd=(mix &4.y (rot 13 (sum:few zc zb)))
|
|
|
|
=+ za=(mix &1.y (rot 18 (sum:few zd zc)))
|
|
|
|
~[za zb zc zd]
|
|
|
|
++ rr :: rowround
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {y+(list @)}
|
2015-06-20 06:01:09 +03:00
|
|
|
=+ za=(qr ~[&1.y &2.y &3.y &4.y])
|
|
|
|
=+ zb=(qr ~[&6.y &7.y &8.y &5.y])
|
|
|
|
=+ zc=(qr ~[&11.y &12.y &9.y &10.y])
|
|
|
|
=+ zd=(qr ~[&16.y &13.y &14.y &15.y])
|
2015-12-04 04:24:39 +03:00
|
|
|
^- (list @) :~
|
2015-06-20 06:01:09 +03:00
|
|
|
&1.za &2.za &3.za &4.za
|
|
|
|
&4.zb &1.zb &2.zb &3.zb
|
|
|
|
&3.zc &4.zc &1.zc &2.zc
|
|
|
|
&2.zd &3.zd &4.zd &1.zd ==
|
|
|
|
++ cr :: columnround
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {x+(list @)}
|
2015-06-20 06:01:09 +03:00
|
|
|
=+ ya=(qr ~[&1.x &5.x &9.x &13.x])
|
|
|
|
=+ yb=(qr ~[&6.x &10.x &14.x &2.x])
|
|
|
|
=+ yc=(qr ~[&11.x &15.x &3.x &7.x])
|
|
|
|
=+ yd=(qr ~[&16.x &4.x &8.x &12.x])
|
2015-12-04 04:24:39 +03:00
|
|
|
^- (list @) :~
|
2015-06-20 06:01:09 +03:00
|
|
|
&1.ya &4.yb &3.yc &2.yd
|
|
|
|
&2.ya &1.yb &4.yc &3.yd
|
|
|
|
&3.ya &2.yb &1.yc &4.yd
|
|
|
|
&4.ya &3.yb &2.yc &1.yd ==
|
|
|
|
++ dr :: doubleround
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {x+(list @)}
|
2015-06-20 06:01:09 +03:00
|
|
|
(rr (cr x))
|
|
|
|
++ al :: add two lists
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+(list @) b+(list @)}
|
|
|
|
|- ^- (list @)
|
2015-06-20 06:01:09 +03:00
|
|
|
?~ a ~ ?~ b ~
|
|
|
|
[i=(sum:few -.a -.b) t=$(a +.a, b +.b)]
|
|
|
|
--
|
|
|
|
=+ xw=(rpp 5 16 x)
|
2015-12-04 18:16:34 +03:00
|
|
|
=+ ^= ow |- ^- (list @)
|
2015-06-20 06:01:09 +03:00
|
|
|
?~ r xw
|
|
|
|
$(xw (dr xw), r (sub r 2))
|
|
|
|
(rep 5 (al xw ow))
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
2015-06-20 06:01:09 +03:00
|
|
|
++ rpp
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+bloq b+@ c+@} :: rip w/filler blocks
|
2015-06-20 06:01:09 +03:00
|
|
|
=+ q=(rip a c)
|
|
|
|
=+ w=(lent q)
|
|
|
|
?. =(w b)
|
|
|
|
?. (lth w b) (slag (sub w b) q)
|
|
|
|
^+ q (weld q (reap (sub b (lent q)) 0))
|
|
|
|
q
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
2015-06-20 06:01:09 +03:00
|
|
|
++ bls
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+@ b+(list @)} :: split to sublists
|
2015-06-20 06:01:09 +03:00
|
|
|
?> =((mod (lent b) a) 0)
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- (list (list @))
|
2015-06-20 06:01:09 +03:00
|
|
|
?~ b ~
|
2015-12-04 18:16:34 +03:00
|
|
|
[i=(scag a `(list @)`b) t=$(b (slag a `(list @)`b))]
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
2015-06-20 06:01:09 +03:00
|
|
|
++ slb
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {a+(list (list @))}
|
|
|
|
|- ^- (list @)
|
2015-06-20 06:01:09 +03:00
|
|
|
?~ a ~
|
2015-12-04 18:16:34 +03:00
|
|
|
(weld `(list @)`-.a $(a +.a))
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
2015-06-20 06:01:09 +03:00
|
|
|
++ sbm
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {r+@ b+(list @)} :: scryptBlockMix
|
2015-06-20 06:01:09 +03:00
|
|
|
?> =((lent b) (mul 2 r))
|
|
|
|
=+ [x=(snag (dec (mul 2 r)) b) c=0]
|
2015-12-04 04:24:39 +03:00
|
|
|
=| {ya+(list @) yb+(list @)}
|
|
|
|
|- ^- (list @)
|
2015-06-20 06:01:09 +03:00
|
|
|
?~ b (flop (weld yb ya))
|
|
|
|
=. x (sal (mix x -.b) 8)
|
|
|
|
?~ (mod c 2)
|
|
|
|
$(c +(c), b +.b, ya [i=x t=ya])
|
|
|
|
$(c +(c), b +.b, yb [i=x t=yb])
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
2015-06-20 06:01:09 +03:00
|
|
|
++ srm
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {r+@ b+(list @) n+@} :: scryptROMix
|
2015-06-26 22:27:46 +03:00
|
|
|
?> ?& =((lent b) (mul 2 r))
|
|
|
|
=(n (bex (dec (xeb n))))
|
|
|
|
(lth n (bex (mul r 16)))
|
|
|
|
==
|
2015-12-04 04:24:39 +03:00
|
|
|
=+ [v=*(list (list @)) c=0]
|
2015-06-20 06:01:09 +03:00
|
|
|
=. v
|
2015-12-04 04:24:39 +03:00
|
|
|
|- ^- (list (list @))
|
2015-06-20 06:01:09 +03:00
|
|
|
=+ w=(sbm r b)
|
|
|
|
?: =(c n) (flop v)
|
|
|
|
$(c +(c), v [i=[b] t=v], b w)
|
|
|
|
=+ x=(sbm r (snag (dec n) v))
|
2015-12-04 04:24:39 +03:00
|
|
|
|- ^- (list @)
|
2015-06-20 06:01:09 +03:00
|
|
|
?: =(c n) x
|
|
|
|
=+ q=(snag (dec (mul r 2)) x)
|
2015-12-04 04:24:39 +03:00
|
|
|
=+ z=`(list @)`(snag (mod q n) v)
|
2015-12-04 18:16:34 +03:00
|
|
|
=+ ^= w |- ^- (list @)
|
2015-06-20 06:01:09 +03:00
|
|
|
?~ x ~ ?~ z ~
|
|
|
|
[i=(mix -.x -.z) t=$(x +.x, z +.z)]
|
|
|
|
$(x (sbm r w), c +(c))
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
2015-06-20 06:01:09 +03:00
|
|
|
++ hmc
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {k+@ t+@} :: HMAC-SHA-256
|
2015-06-20 06:01:09 +03:00
|
|
|
(hml k (met 3 k) t (met 3 t))
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
2015-06-20 06:01:09 +03:00
|
|
|
++ hml
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {k+@ kl+@ t+@ tl+@} :: w/length
|
2015-06-20 06:01:09 +03:00
|
|
|
=> .(k (end 3 kl k), t (end 3 tl t))
|
|
|
|
=+ b=64
|
|
|
|
=. k ?. (gth kl b) k (shay kl k)
|
|
|
|
=+ ^= q %+ shay (add b tl)
|
|
|
|
(add (lsh 3 b t) (mix k (fil 3 b 0x36)))
|
|
|
|
%+ shay (add b 32)
|
|
|
|
(add (lsh 3 b q) (mix k (fil 3 b 0x5c)))
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
2015-08-04 06:00:09 +03:00
|
|
|
++ pbk :: PBKDF2-HMAC-SHA256
|
|
|
|
~/ %pbk
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {p+@ s+@ c+@ d+@}
|
2015-06-20 06:01:09 +03:00
|
|
|
(pbl p (met 3 p) s (met 3 s) c d)
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
2015-08-04 06:00:09 +03:00
|
|
|
++ pbl :: w/length
|
|
|
|
~/ %pbl
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {p+@ pl+@ s+@ sl+@ c+@ d+@}
|
2015-06-20 06:01:09 +03:00
|
|
|
=> .(p (end 3 pl p), s (end 3 sl s))
|
|
|
|
=+ h=32
|
|
|
|
?> ?& (lte d (bex 30)) :: max key length 1GB
|
|
|
|
(lte c (bex 28)) :: max iterations 2^28
|
|
|
|
!=(c 0)
|
|
|
|
==
|
|
|
|
=+ ^= l ?~ (mod d h)
|
2015-07-31 05:01:20 +03:00
|
|
|
(div d h)
|
|
|
|
+((div d h))
|
2015-06-20 06:01:09 +03:00
|
|
|
=+ r=(sub d (mul h (dec l)))
|
|
|
|
=+ [t=0 j=1 k=1]
|
|
|
|
=. t |- ^- @
|
|
|
|
?: (gth j l) t
|
|
|
|
=+ u=(add s (lsh 3 sl (rep 3 (flop (rpp 3 4 j)))))
|
|
|
|
=+ f=0 =. f |- ^- @
|
2015-06-26 22:27:46 +03:00
|
|
|
?: (gth k c) f
|
2015-06-20 06:01:09 +03:00
|
|
|
=+ q=(hml p pl u ?:(=(k 1) (add sl 4) h))
|
|
|
|
$(u q, f (mix f q), k +(k))
|
|
|
|
$(t (add t (lsh 3 (mul (dec j) h) f)), j +(j))
|
|
|
|
(end 3 d t)
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
2015-08-04 06:00:09 +03:00
|
|
|
++ hsh :: scrypt
|
|
|
|
~/ %hsh
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {p+@ s+@ n+@ r+@ z+@ d+@}
|
2015-06-20 06:01:09 +03:00
|
|
|
(hsl p (met 3 p) s (met 3 s) n r z d)
|
2015-05-04 02:31:45 +03:00
|
|
|
::
|
2015-08-04 06:00:09 +03:00
|
|
|
++ hsl :: w/length
|
|
|
|
~/ %hsl
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {p+@ pl+@ s+@ sl+@ n+@ r+@ z+@ d+@}
|
|
|
|
=| v=(list (list @))
|
2015-06-20 06:01:09 +03:00
|
|
|
=> .(p (end 3 pl p), s (end 3 sl s))
|
|
|
|
=+ u=(mul (mul 128 r) z)
|
|
|
|
?> ?& =(n (bex (dec (xeb n)))) :: n is power of 2
|
|
|
|
!=(r 0) !=(z 0)
|
|
|
|
%+ lte :: max 1GB memory
|
|
|
|
(mul (mul 128 r) (dec (add n z)))
|
|
|
|
(bex 30)
|
|
|
|
(lth pl (bex 31))
|
|
|
|
(lth sl (bex 31))
|
|
|
|
==
|
|
|
|
=+ ^= b =+ (rpp 3 u (pbl p pl s sl 1 u))
|
|
|
|
%+ turn (bls (mul 128 r) -)
|
2015-12-04 04:24:39 +03:00
|
|
|
|=(a+(list @) (rpp 9 (mul 2 r) (rep 3 a)))
|
2015-06-20 06:01:09 +03:00
|
|
|
?> =((lent b) z)
|
|
|
|
=+ ^= q
|
|
|
|
=+ |- ?~ b (flop v)
|
|
|
|
$(b +.b, v [i=(srm r -.b n) t=v])
|
2015-12-04 18:16:34 +03:00
|
|
|
%+ turn `(list (list @))`-
|
2015-12-04 04:24:39 +03:00
|
|
|
|=(a+(list @) (rpp 3 (mul 128 r) (rep 9 a)))
|
2015-06-20 06:01:09 +03:00
|
|
|
(pbl p pl (rep 3 (slb q)) u 1 d)
|
2015-05-04 02:31:45 +03:00
|
|
|
--
|
2014-04-11 05:05:59 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2013-09-29 00:21:18 +04:00
|
|
|
:: section 2eY, SHA-256 (move me) ::
|
|
|
|
::
|
|
|
|
++ shad |=(ruz=@ (shax (shax ruz))) :: double sha-256
|
|
|
|
++ shaf :: half sha-256
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {sal+@ ruz+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ haz=(shas sal ruz)
|
|
|
|
(mix (end 7 1 haz) (rsh 7 1 haz))
|
|
|
|
::
|
|
|
|
++ shak :: XX shd be PBKDF
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {who+@p wud+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
(shas (mix %shak who) wud)
|
|
|
|
::
|
2014-10-22 00:53:27 +04:00
|
|
|
++ sham :: 128bit noun hash
|
2015-12-04 04:24:39 +03:00
|
|
|
|= yux+* ^- @uvH ^- @
|
2013-09-29 00:21:18 +04:00
|
|
|
?@ yux
|
|
|
|
(shaf %mash yux)
|
|
|
|
(shaf %sham (jam yux))
|
|
|
|
::
|
|
|
|
++ shas :: salted hash
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {sal+@ ruz+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
(shax (mix sal (shax ruz)))
|
|
|
|
::
|
|
|
|
++ shax :: sha-256
|
|
|
|
~/ %shax
|
2015-12-04 04:24:39 +03:00
|
|
|
|= ruz+@ ^- @
|
2015-02-25 05:08:20 +03:00
|
|
|
(shay [(met 3 ruz) ruz])
|
|
|
|
::
|
|
|
|
++ shay :: sha-256 with length
|
|
|
|
~/ %shay
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {len+@u ruz+@} ^- @
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %sha
|
2015-02-25 05:08:20 +03:00
|
|
|
=> .(ruz (cut 3 [0 len] ruz))
|
2015-12-08 04:46:28 +03:00
|
|
|
=+ [few==>(fe .(a 5)) wac=|=({a+@ b+@} (cut 5 [a 1] b))]
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ [sum=sum.few ror=ror.few net=net.few inv=inv.few]
|
2015-02-25 05:08:20 +03:00
|
|
|
=+ ral=(lsh 0 3 len)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ^= ful
|
|
|
|
%+ can 0
|
|
|
|
:~ [ral ruz]
|
|
|
|
[8 128]
|
|
|
|
[(mod (sub 960 (mod (add 8 ral) 512)) 512) 0]
|
|
|
|
[64 (~(net fe 6) ral)]
|
|
|
|
==
|
|
|
|
=+ lex=(met 9 ful)
|
|
|
|
=+ ^= kbx 0xc671.78f2.bef9.a3f7.a450.6ceb.90be.fffa.
|
|
|
|
8cc7.0208.84c8.7814.78a5.636f.748f.82ee.
|
|
|
|
682e.6ff3.5b9c.ca4f.4ed8.aa4a.391c.0cb3.
|
|
|
|
34b0.bcb5.2748.774c.1e37.6c08.19a4.c116.
|
|
|
|
106a.a070.f40e.3585.d699.0624.d192.e819.
|
|
|
|
c76c.51a3.c24b.8b70.a81a.664b.a2bf.e8a1.
|
|
|
|
9272.2c85.81c2.c92e.766a.0abb.650a.7354.
|
|
|
|
5338.0d13.4d2c.6dfc.2e1b.2138.27b7.0a85.
|
|
|
|
1429.2967.06ca.6351.d5a7.9147.c6e0.0bf3.
|
|
|
|
bf59.7fc7.b003.27c8.a831.c66d.983e.5152.
|
|
|
|
76f9.88da.5cb0.a9dc.4a74.84aa.2de9.2c6f.
|
|
|
|
240c.a1cc.0fc1.9dc6.efbe.4786.e49b.69c1.
|
|
|
|
c19b.f174.9bdc.06a7.80de.b1fe.72be.5d74.
|
|
|
|
550c.7dc3.2431.85be.1283.5b01.d807.aa98.
|
|
|
|
ab1c.5ed5.923f.82a4.59f1.11f1.3956.c25b.
|
|
|
|
e9b5.dba5.b5c0.fbcf.7137.4491.428a.2f98
|
|
|
|
=+ ^= hax 0x5be0.cd19.1f83.d9ab.9b05.688c.510e.527f.
|
|
|
|
a54f.f53a.3c6e.f372.bb67.ae85.6a09.e667
|
|
|
|
=+ i=0
|
|
|
|
|- ^- @
|
|
|
|
?: =(i lex)
|
|
|
|
(rep 5 (turn (rip 5 hax) net))
|
|
|
|
=+ ^= wox
|
|
|
|
=+ dux=(cut 9 [i 1] ful)
|
|
|
|
=+ wox=(rep 5 (turn (rip 5 dux) net))
|
|
|
|
=+ j=16
|
|
|
|
|- ^- @
|
|
|
|
?: =(64 j)
|
2013-12-09 01:23:03 +04:00
|
|
|
wox
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ :* l=(wac (sub j 15) wox)
|
|
|
|
m=(wac (sub j 2) wox)
|
|
|
|
n=(wac (sub j 16) wox)
|
|
|
|
o=(wac (sub j 7) wox)
|
|
|
|
==
|
2014-01-25 02:08:37 +04:00
|
|
|
=+ x=:(mix (ror 0 7 l) (ror 0 18 l) (rsh 0 3 l))
|
|
|
|
=+ y=:(mix (ror 0 17 m) (ror 0 19 m) (rsh 0 10 m))
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ z=:(sum n x o y)
|
|
|
|
$(wox (con (lsh 5 j z) wox), j +(j))
|
|
|
|
=+ j=0
|
|
|
|
=+ :* a=(wac 0 hax)
|
|
|
|
b=(wac 1 hax)
|
|
|
|
c=(wac 2 hax)
|
|
|
|
d=(wac 3 hax)
|
|
|
|
e=(wac 4 hax)
|
|
|
|
f=(wac 5 hax)
|
|
|
|
g=(wac 6 hax)
|
|
|
|
h=(wac 7 hax)
|
|
|
|
==
|
|
|
|
|- ^- @
|
|
|
|
?: =(64 j)
|
|
|
|
%= ^$
|
|
|
|
i +(i)
|
|
|
|
hax %+ rep 5
|
|
|
|
:~ (sum a (wac 0 hax))
|
|
|
|
(sum b (wac 1 hax))
|
|
|
|
(sum c (wac 2 hax))
|
|
|
|
(sum d (wac 3 hax))
|
|
|
|
(sum e (wac 4 hax))
|
|
|
|
(sum f (wac 5 hax))
|
|
|
|
(sum g (wac 6 hax))
|
|
|
|
(sum h (wac 7 hax))
|
|
|
|
==
|
|
|
|
==
|
2014-01-25 02:08:37 +04:00
|
|
|
=+ l=:(mix (ror 0 2 a) (ror 0 13 a) (ror 0 22 a)) :: s0
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ m=:(mix (dis a b) (dis a c) (dis b c)) :: maj
|
|
|
|
=+ n=(sum l m) :: t2
|
2014-01-25 02:08:37 +04:00
|
|
|
=+ o=:(mix (ror 0 6 e) (ror 0 11 e) (ror 0 25 e)) :: s1
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ p=(mix (dis e f) (dis (inv e) g)) :: ch
|
|
|
|
=+ q=:(sum h o p (wac j kbx) (wac j wox)) :: t1
|
|
|
|
$(j +(j), a (sum q n), b a, c b, d c, e (sum d q), f e, g f, h g)
|
|
|
|
::
|
|
|
|
++ shaw :: hash to nbits
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {sal+@ len+@ ruz+@}
|
2013-09-29 00:21:18 +04:00
|
|
|
(~(raw og (shas sal (mix len ruz))) len)
|
|
|
|
::
|
|
|
|
++ og :: shax-powered rng
|
|
|
|
~/ %og
|
2015-12-04 04:24:39 +03:00
|
|
|
|_ a+@
|
2013-09-29 00:21:18 +04:00
|
|
|
++ rad :: random in range
|
2015-12-04 04:24:39 +03:00
|
|
|
|= b+@ ^- @
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ c=(raw (met 0 b))
|
2013-09-29 00:21:18 +04:00
|
|
|
?:((lth c b) c $(a +(a)))
|
2015-12-04 04:24:39 +03:00
|
|
|
::
|
2014-06-25 19:16:28 +04:00
|
|
|
++ rads :: random continuation
|
2015-12-04 04:24:39 +03:00
|
|
|
|= b+@
|
2014-06-25 19:16:28 +04:00
|
|
|
=+ r=(rad b)
|
2014-07-24 01:01:52 +04:00
|
|
|
[r +>.$(a (shas %og-s r))]
|
2015-12-04 04:24:39 +03:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ raw :: random bits
|
|
|
|
~/ %raw
|
2015-12-04 04:24:39 +03:00
|
|
|
|= b+@ ^- @
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ can
|
|
|
|
0
|
|
|
|
=+ c=(shas %og-a (mix b a))
|
2015-12-04 04:24:39 +03:00
|
|
|
|- ^- (list {@ @})
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 b)
|
|
|
|
~
|
|
|
|
=+ d=(shas %og-b (mix b (mix a c)))
|
|
|
|
?: (lth b 256)
|
|
|
|
[[b (end 0 b d)] ~]
|
|
|
|
[[256 d] $(c d, b (sub b 256))]
|
2015-12-04 04:24:39 +03:00
|
|
|
::
|
2015-08-08 01:57:21 +03:00
|
|
|
++ raws :: random bits
|
|
|
|
|= b=@ :: continuation
|
2014-06-25 19:16:28 +04:00
|
|
|
=+ r=(raw b)
|
2014-07-24 01:01:52 +04:00
|
|
|
[r +>.$(a (shas %og-s r))]
|
2013-09-29 00:21:18 +04:00
|
|
|
--
|
2014-01-21 06:07:11 +04:00
|
|
|
++ shaz :: sha-512
|
2015-12-04 04:24:39 +03:00
|
|
|
|= ruz+@ ^- @
|
2014-01-22 03:01:14 +04:00
|
|
|
(shal [(met 3 ruz) ruz])
|
2015-12-04 04:24:39 +03:00
|
|
|
::
|
2014-01-22 03:01:14 +04:00
|
|
|
++ shal :: sha-512 with length
|
|
|
|
~/ %shal
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {len+@ ruz+@} ^- @
|
2014-01-22 03:37:46 +04:00
|
|
|
=> .(ruz (cut 3 [0 len] ruz))
|
2015-12-08 04:46:28 +03:00
|
|
|
=+ [few==>(fe .(a 6)) wac=|=({a+@ b+@} (cut 6 [a 1] b))]
|
2014-01-21 06:07:11 +04:00
|
|
|
=+ [sum=sum.few ror=ror.few net=net.few inv=inv.few]
|
2014-01-22 03:01:14 +04:00
|
|
|
=+ ral=(lsh 0 3 len)
|
2014-01-21 06:07:11 +04:00
|
|
|
=+ ^= ful
|
|
|
|
%+ can 0
|
|
|
|
:~ [ral ruz]
|
|
|
|
[8 128]
|
|
|
|
[(mod (sub 1.920 (mod (add 8 ral) 1.024)) 1.024) 0]
|
|
|
|
[128 (~(net fe 7) ral)]
|
|
|
|
==
|
|
|
|
=+ lex=(met 10 ful)
|
|
|
|
=+ ^= kbx 0x6c44.198c.4a47.5817.5fcb.6fab.3ad6.faec.
|
|
|
|
597f.299c.fc65.7e2a.4cc5.d4be.cb3e.42b6.
|
|
|
|
431d.67c4.9c10.0d4c.3c9e.be0a.15c9.bebc.
|
|
|
|
32ca.ab7b.40c7.2493.28db.77f5.2304.7d84.
|
|
|
|
1b71.0b35.131c.471b.113f.9804.bef9.0dae.
|
|
|
|
0a63.7dc5.a2c8.98a6.06f0.67aa.7217.6fba.
|
|
|
|
f57d.4f7f.ee6e.d178.eada.7dd6.cde0.eb1e.
|
|
|
|
d186.b8c7.21c0.c207.ca27.3ece.ea26.619c.
|
|
|
|
c671.78f2.e372.532b.bef9.a3f7.b2c6.7915.
|
|
|
|
a450.6ceb.de82.bde9.90be.fffa.2363.1e28.
|
|
|
|
8cc7.0208.1a64.39ec.84c8.7814.a1f0.ab72.
|
|
|
|
78a5.636f.4317.2f60.748f.82ee.5def.b2fc.
|
|
|
|
682e.6ff3.d6b2.b8a3.5b9c.ca4f.7763.e373.
|
|
|
|
4ed8.aa4a.e341.8acb.391c.0cb3.c5c9.5a63.
|
|
|
|
34b0.bcb5.e19b.48a8.2748.774c.df8e.eb99.
|
|
|
|
1e37.6c08.5141.ab53.19a4.c116.b8d2.d0c8.
|
|
|
|
106a.a070.32bb.d1b8.f40e.3585.5771.202a.
|
|
|
|
d699.0624.5565.a910.d192.e819.d6ef.5218.
|
|
|
|
c76c.51a3.0654.be30.c24b.8b70.d0f8.9791.
|
|
|
|
a81a.664b.bc42.3001.a2bf.e8a1.4cf1.0364.
|
|
|
|
9272.2c85.1482.353b.81c2.c92e.47ed.aee6.
|
|
|
|
766a.0abb.3c77.b2a8.650a.7354.8baf.63de.
|
|
|
|
5338.0d13.9d95.b3df.4d2c.6dfc.5ac4.2aed.
|
|
|
|
2e1b.2138.5c26.c926.27b7.0a85.46d2.2ffc.
|
|
|
|
1429.2967.0a0e.6e70.06ca.6351.e003.826f.
|
|
|
|
d5a7.9147.930a.a725.c6e0.0bf3.3da8.8fc2.
|
|
|
|
bf59.7fc7.beef.0ee4.b003.27c8.98fb.213f.
|
|
|
|
a831.c66d.2db4.3210.983e.5152.ee66.dfab.
|
|
|
|
76f9.88da.8311.53b5.5cb0.a9dc.bd41.fbd4.
|
|
|
|
4a74.84aa.6ea6.e483.2de9.2c6f.592b.0275.
|
|
|
|
240c.a1cc.77ac.9c65.0fc1.9dc6.8b8c.d5b5.
|
|
|
|
efbe.4786.384f.25e3.e49b.69c1.9ef1.4ad2.
|
|
|
|
c19b.f174.cf69.2694.9bdc.06a7.25c7.1235.
|
|
|
|
80de.b1fe.3b16.96b1.72be.5d74.f27b.896f.
|
|
|
|
550c.7dc3.d5ff.b4e2.2431.85be.4ee4.b28c.
|
|
|
|
1283.5b01.4570.6fbe.d807.aa98.a303.0242.
|
|
|
|
ab1c.5ed5.da6d.8118.923f.82a4.af19.4f9b.
|
|
|
|
59f1.11f1.b605.d019.3956.c25b.f348.b538.
|
|
|
|
e9b5.dba5.8189.dbbc.b5c0.fbcf.ec4d.3b2f.
|
|
|
|
7137.4491.23ef.65cd.428a.2f98.d728.ae22
|
|
|
|
=+ ^= hax 0x5be0.cd19.137e.2179.1f83.d9ab.fb41.bd6b.
|
|
|
|
9b05.688c.2b3e.6c1f.510e.527f.ade6.82d1.
|
|
|
|
a54f.f53a.5f1d.36f1.3c6e.f372.fe94.f82b.
|
|
|
|
bb67.ae85.84ca.a73b.6a09.e667.f3bc.c908
|
|
|
|
=+ i=0
|
|
|
|
|- ^- @
|
|
|
|
?: =(i lex)
|
|
|
|
(rep 6 (turn (rip 6 hax) net))
|
|
|
|
=+ ^= wox
|
|
|
|
=+ dux=(cut 10 [i 1] ful)
|
|
|
|
=+ wox=(rep 6 (turn (rip 6 dux) net))
|
|
|
|
=+ j=16
|
|
|
|
|- ^- @
|
|
|
|
?: =(80 j)
|
|
|
|
wox
|
|
|
|
=+ :* l=(wac (sub j 15) wox)
|
|
|
|
m=(wac (sub j 2) wox)
|
|
|
|
n=(wac (sub j 16) wox)
|
|
|
|
o=(wac (sub j 7) wox)
|
|
|
|
==
|
2014-01-25 02:08:37 +04:00
|
|
|
=+ x=:(mix (ror 0 1 l) (ror 0 8 l) (rsh 0 7 l))
|
|
|
|
=+ y=:(mix (ror 0 19 m) (ror 0 61 m) (rsh 0 6 m))
|
2014-01-21 06:07:11 +04:00
|
|
|
=+ z=:(sum n x o y)
|
|
|
|
$(wox (con (lsh 6 j z) wox), j +(j))
|
|
|
|
=+ j=0
|
|
|
|
=+ :* a=(wac 0 hax)
|
|
|
|
b=(wac 1 hax)
|
|
|
|
c=(wac 2 hax)
|
|
|
|
d=(wac 3 hax)
|
|
|
|
e=(wac 4 hax)
|
|
|
|
f=(wac 5 hax)
|
|
|
|
g=(wac 6 hax)
|
|
|
|
h=(wac 7 hax)
|
|
|
|
==
|
|
|
|
|- ^- @
|
|
|
|
?: =(80 j)
|
|
|
|
%= ^$
|
|
|
|
i +(i)
|
|
|
|
hax %+ rep 6
|
|
|
|
:~ (sum a (wac 0 hax))
|
|
|
|
(sum b (wac 1 hax))
|
|
|
|
(sum c (wac 2 hax))
|
|
|
|
(sum d (wac 3 hax))
|
|
|
|
(sum e (wac 4 hax))
|
|
|
|
(sum f (wac 5 hax))
|
|
|
|
(sum g (wac 6 hax))
|
|
|
|
(sum h (wac 7 hax))
|
|
|
|
==
|
|
|
|
==
|
2014-01-25 02:08:37 +04:00
|
|
|
=+ l=:(mix (ror 0 28 a) (ror 0 34 a) (ror 0 39 a)) :: S0
|
2014-01-21 06:07:11 +04:00
|
|
|
=+ m=:(mix (dis a b) (dis a c) (dis b c)) :: maj
|
|
|
|
=+ n=(sum l m) :: t2
|
2014-01-25 02:08:37 +04:00
|
|
|
=+ o=:(mix (ror 0 14 e) (ror 0 18 e) (ror 0 41 e)) :: S1
|
2014-01-21 06:07:11 +04:00
|
|
|
=+ p=(mix (dis e f) (dis (inv e) g)) :: ch
|
|
|
|
=+ q=:(sum h o p (wac j kbx) (wac j wox)) :: t1
|
|
|
|
$(j +(j), a (sum q n), b a, c b, d c, e (sum d q), f e, g f, h g)
|
2014-04-28 03:19:58 +04:00
|
|
|
::
|
|
|
|
++ shan :: sha-1 (deprecated)
|
2015-12-04 04:24:39 +03:00
|
|
|
|= ruz+@
|
2015-12-08 04:46:28 +03:00
|
|
|
=+ [few==>(fe .(a 5)) wac=|=({a+@ b+@} (cut 5 [a 1] b))]
|
2014-04-28 03:19:58 +04:00
|
|
|
=+ [sum=sum.few ror=ror.few rol=rol.few net=net.few inv=inv.few]
|
|
|
|
=+ ral=(lsh 0 3 (met 3 ruz))
|
|
|
|
=+ ^= ful
|
|
|
|
%+ can 0
|
|
|
|
:~ [ral ruz]
|
|
|
|
[8 128]
|
|
|
|
[(mod (sub 960 (mod (add 8 ral) 512)) 512) 0]
|
|
|
|
[64 (~(net fe 6) ral)]
|
|
|
|
==
|
|
|
|
=+ lex=(met 9 ful)
|
|
|
|
=+ kbx=0xca62.c1d6.8f1b.bcdc.6ed9.eba1.5a82.7999
|
|
|
|
=+ hax=0xc3d2.e1f0.1032.5476.98ba.dcfe.efcd.ab89.6745.2301
|
|
|
|
=+ i=0
|
|
|
|
|-
|
|
|
|
?: =(i lex)
|
2014-04-30 08:35:21 +04:00
|
|
|
(rep 5 (flop (rip 5 hax)))
|
2014-04-28 03:19:58 +04:00
|
|
|
=+ ^= wox
|
|
|
|
=+ dux=(cut 9 [i 1] ful)
|
|
|
|
=+ wox=(rep 5 (turn (rip 5 dux) net))
|
|
|
|
=+ j=16
|
|
|
|
|- ^- @
|
|
|
|
?: =(80 j)
|
|
|
|
wox
|
|
|
|
=+ :* l=(wac (sub j 3) wox)
|
|
|
|
m=(wac (sub j 8) wox)
|
|
|
|
n=(wac (sub j 14) wox)
|
|
|
|
o=(wac (sub j 16) wox)
|
|
|
|
==
|
|
|
|
=+ z=(rol 0 1 :(mix l m n o))
|
|
|
|
$(wox (con (lsh 5 j z) wox), j +(j))
|
|
|
|
=+ j=0
|
|
|
|
=+ :* a=(wac 0 hax)
|
|
|
|
b=(wac 1 hax)
|
|
|
|
c=(wac 2 hax)
|
|
|
|
d=(wac 3 hax)
|
|
|
|
e=(wac 4 hax)
|
|
|
|
==
|
|
|
|
|- ^- @
|
|
|
|
?: =(80 j)
|
|
|
|
%= ^$
|
|
|
|
i +(i)
|
|
|
|
hax %+ rep 5
|
2014-04-30 09:05:57 +04:00
|
|
|
:~
|
2014-04-28 03:19:58 +04:00
|
|
|
(sum a (wac 0 hax))
|
2014-04-30 08:35:21 +04:00
|
|
|
(sum b (wac 1 hax))
|
|
|
|
(sum c (wac 2 hax))
|
|
|
|
(sum d (wac 3 hax))
|
|
|
|
(sum e (wac 4 hax))
|
2014-04-28 03:19:58 +04:00
|
|
|
==
|
|
|
|
==
|
|
|
|
=+ fx=(con (dis b c) (dis (not 5 1 b) d))
|
|
|
|
=+ fy=:(mix b c d)
|
|
|
|
=+ fz=:(con (dis b c) (dis b d) (dis c d))
|
|
|
|
=+ ^= tem
|
|
|
|
?: &((gte j 0) (lte j 19))
|
|
|
|
:(sum (rol 0 5 a) fx e (wac 0 kbx) (wac j wox))
|
|
|
|
?: &((gte j 20) (lte j 39))
|
|
|
|
:(sum (rol 0 5 a) fy e (wac 1 kbx) (wac j wox))
|
|
|
|
?: &((gte j 40) (lte j 59))
|
|
|
|
:(sum (rol 0 5 a) fz e (wac 2 kbx) (wac j wox))
|
|
|
|
:(sum (rol 0 5 a) fy e (wac 3 kbx) (wac j wox))
|
|
|
|
$(j +(j), a tem, b a, c (rol 0 30 b), d c, e d)
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2eZ, OLD rendering (kill me) ::
|
|
|
|
::
|
|
|
|
++ show :: XX deprecated, use type
|
2015-12-04 04:24:39 +03:00
|
|
|
|= vem+*
|
2013-09-29 00:21:18 +04:00
|
|
|
|^ ^- tank
|
|
|
|
?: ?=(@ vem)
|
|
|
|
[%leaf (mesc (trip vem))]
|
|
|
|
?- vem
|
2015-12-04 04:24:39 +03:00
|
|
|
{s+$~ c+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
[%leaf '\'' (weld (mesc (tape +.vem)) `tape`['\'' ~])]
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{s+$a c+@} [%leaf (mesc (trip c.vem))]
|
2015-12-05 02:59:29 +03:00
|
|
|
{s+$b c+*} (shop c.vem |=(a+@ ~(rub at a)))
|
2015-12-04 04:24:39 +03:00
|
|
|
{s+{$c p+@} c+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %palm
|
|
|
|
[['.' ~] ['-' ~] ~ ~]
|
|
|
|
[[%leaf (mesc (trip p.s.vem))] $(vem c.vem) ~]
|
|
|
|
::
|
2015-12-05 02:59:29 +03:00
|
|
|
{s+$d c+*} (shop c.vem |=(a+@ ~(rud at a)))
|
2015-12-04 04:24:39 +03:00
|
|
|
{s+$k c+*} (tank c.vem)
|
|
|
|
{s+$h c+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(0 c.vem) :: XX remove after 220
|
|
|
|
[%leaf '#' ~]
|
|
|
|
:+ %rose
|
|
|
|
[['/' ~] ['/' ~] ~]
|
2015-12-04 18:16:34 +03:00
|
|
|
=+ yol=((list @ta) c.vem)
|
2015-12-05 02:59:29 +03:00
|
|
|
(turn yol |=(a+@ta [%leaf (trip a)]))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{s+$o c+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
%= $
|
2013-12-09 01:23:03 +04:00
|
|
|
vem
|
|
|
|
:- [%m '%h:<[%d %d].[%d %d]>']
|
2013-09-29 00:21:18 +04:00
|
|
|
[-.c.vem +<-.c.vem +<+.c.vem +>-.c.vem +>+.c.vem ~]
|
|
|
|
==
|
|
|
|
::
|
2015-12-05 02:59:29 +03:00
|
|
|
{s+$p c+*} (shop c.vem |=(a+@ ~(rup at a)))
|
|
|
|
{s+$q c+*} (shop c.vem |=(a+@ ~(r at a)))
|
2015-12-04 04:24:39 +03:00
|
|
|
{s+$r c+*} $(vem [[%r ' ' '{' '}'] c.vem])
|
2015-12-05 02:59:29 +03:00
|
|
|
{s+$t c+*} (shop c.vem |=(a+@ ~(rt at a)))
|
|
|
|
{s+$v c+*} (shop c.vem |=(a+@ ~(ruv at a)))
|
|
|
|
{s+$x c+*} (shop c.vem |=(a+@ ~(rux at a)))
|
2015-12-04 04:24:39 +03:00
|
|
|
{s+{$m p=@} c+*} (shep p.s.vem c.vem)
|
|
|
|
{s+{$r p=@} c+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
$(vem [[%r ' ' (cut 3 [0 1] p.s.vem) (cut 3 [1 1] p.s.vem)] c.vem])
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{s={$r p=@ q=@ r=@} c=*}
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %rose
|
|
|
|
:* p=(mesc (trip p.s.vem))
|
|
|
|
q=(mesc (trip q.s.vem))
|
|
|
|
r=(mesc (trip r.s.vem))
|
|
|
|
==
|
|
|
|
|- ^- (list tank)
|
|
|
|
?@ c.vem
|
|
|
|
~
|
|
|
|
[^$(vem -.c.vem) $(c.vem +.c.vem)]
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{s+$z c+*} $(vem [[%r %$ %$ %$] c.vem])
|
2013-09-29 00:21:18 +04:00
|
|
|
* !!
|
|
|
|
==
|
|
|
|
++ shep
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {fom+@ gar+*}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- tank
|
|
|
|
=+ l=(met 3 fom)
|
|
|
|
=+ i=0
|
|
|
|
:- %leaf
|
|
|
|
|- ^- tape
|
|
|
|
?: (gte i l)
|
|
|
|
~
|
|
|
|
=+ c=(cut 3 [i 1] fom)
|
|
|
|
?. =(37 c)
|
|
|
|
(weld (mesc [c ~]) $(i +(i)))
|
|
|
|
=+ d=(cut 3 [+(i) 1] fom)
|
|
|
|
?. .?(gar)
|
|
|
|
['\\' '#' $(i (add 2 i))]
|
|
|
|
(weld ~(ram re (show d -.gar)) $(i (add 2 i), gar +.gar))
|
|
|
|
::
|
|
|
|
++ shop
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {aug+* vel+_+(a+@ tape)}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- tank
|
|
|
|
?: ?=(@ aug)
|
|
|
|
[%leaf (vel aug)]
|
2013-12-09 01:23:03 +04:00
|
|
|
:+ %rose
|
2013-09-29 00:21:18 +04:00
|
|
|
[[' ' ~] ['[' ~] [']' ~]]
|
|
|
|
=> .(aug `*`aug)
|
|
|
|
|- ^- (list tank)
|
|
|
|
?: ?=(@ aug)
|
|
|
|
[^$ ~]
|
|
|
|
[^$(aug -.aug) $(aug +.aug)]
|
|
|
|
--
|
|
|
|
++ at
|
2015-12-04 04:24:39 +03:00
|
|
|
|_ a+@
|
2013-09-29 00:21:18 +04:00
|
|
|
++ r
|
|
|
|
?: ?& (gte (met 3 a) 2)
|
|
|
|
|-
|
|
|
|
?: =(0 a)
|
|
|
|
&
|
|
|
|
=+ vis=(end 3 1 a)
|
2013-12-09 01:23:03 +04:00
|
|
|
?& ?|(=('-' vis) ?&((gte vis 'a') (lte vis 'z')))
|
2013-09-29 00:21:18 +04:00
|
|
|
$(a (rsh 3 1 a))
|
|
|
|
==
|
|
|
|
==
|
|
|
|
rtam
|
|
|
|
?: (lte (met 3 a) 2)
|
|
|
|
rud
|
|
|
|
rux
|
|
|
|
::
|
2015-12-08 05:04:19 +03:00
|
|
|
++ rf `tape`[?-(a $& '&', $| '|', * !!) ~]
|
2013-09-29 00:21:18 +04:00
|
|
|
++ rn `tape`[?>(=(0 a) '~') ~]
|
|
|
|
++ rt `tape`['\'' (weld (mesc (trip a)) `tape`['\'' ~])]
|
|
|
|
++ rta rt
|
|
|
|
++ rtam `tape`['%' (trip a)]
|
|
|
|
++ rub `tape`['0' 'b' (rum 2 ~ |=(b=@ (add '0' b)))]
|
|
|
|
++ rud (rum 10 ~ |=(b=@ (add '0' b)))
|
|
|
|
++ rum
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {b+@ c+tape d+_+(@ @)}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- tape
|
|
|
|
?: =(0 a)
|
|
|
|
[(d 0) c]
|
|
|
|
=+ e=0
|
|
|
|
|- ^- tape
|
2013-12-09 01:23:03 +04:00
|
|
|
?: =(0 a)
|
2013-09-29 00:21:18 +04:00
|
|
|
c
|
|
|
|
=+ f=&(!=(0 e) =(0 (mod e ?:(=(10 b) 3 4))))
|
|
|
|
%= $
|
|
|
|
a (div a b)
|
|
|
|
c [(d (mod a b)) ?:(f [?:(=(10 b) ',' '-') c] c)]
|
|
|
|
e +(e)
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ rup
|
|
|
|
=+ b=(met 3 a)
|
|
|
|
^- tape
|
|
|
|
:- '-'
|
|
|
|
|- ^- tape
|
|
|
|
?: (gth (met 5 a) 1)
|
|
|
|
%+ weld
|
2013-12-09 01:23:03 +04:00
|
|
|
$(a (rsh 5 1 a), b (sub b 4))
|
2013-09-29 00:21:18 +04:00
|
|
|
`tape`['-' '-' $(a (end 5 1 a), b 4)]
|
|
|
|
?: =(0 b)
|
|
|
|
['~' ~]
|
|
|
|
?: (lte b 1)
|
|
|
|
(trip (tos:po a))
|
|
|
|
|- ^- tape
|
|
|
|
?: =(2 b)
|
|
|
|
=+ c=(rsh 3 1 a)
|
|
|
|
=+ d=(end 3 1 a)
|
|
|
|
(weld (trip (tod:po c)) (trip (tos:po (mix c d))))
|
|
|
|
=+ c=(rsh 3 2 a)
|
|
|
|
=+ d=(end 3 2 a)
|
|
|
|
(weld ^$(a c, b (met 3 c)) `tape`['-' $(a (mix c d), b 2)])
|
|
|
|
::
|
|
|
|
++ ruv
|
|
|
|
^- tape
|
|
|
|
:+ '0'
|
|
|
|
'v'
|
|
|
|
%^ rum
|
|
|
|
64
|
|
|
|
~
|
2015-12-04 04:24:39 +03:00
|
|
|
|= b+@
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(63 b)
|
|
|
|
'+'
|
2013-12-09 01:23:03 +04:00
|
|
|
?: =(62 b)
|
2013-09-29 00:21:18 +04:00
|
|
|
'-'
|
|
|
|
?:((lth b 26) (add 65 b) ?:((lth b 52) (add 71 b) (sub b 4)))
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
++ rux `tape`['0' 'x' (rum 16 ~ |=(b+@ (add b ?:((lth b 10) 48 87))))]
|
2013-09-29 00:21:18 +04:00
|
|
|
--
|
|
|
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::: ::
|
|
|
|
:::: chapter 2f, Hoon proper ::::
|
|
|
|
:: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2fA, miscellaneous funs ::
|
|
|
|
:: ::
|
2015-06-12 20:56:30 +03:00
|
|
|
++ bull :: make %bull type
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {bid+twin der+type}
|
2013-12-23 03:32:30 +04:00
|
|
|
^- type
|
2014-01-02 00:47:18 +04:00
|
|
|
?:(|(=(%void der) =(%void s.bid)) %void [%bull bid der])
|
2013-12-23 03:32:30 +04:00
|
|
|
::
|
2015-12-04 02:53:57 +03:00
|
|
|
++ cain |=(vax=vase (sell vax)) :: $+(vase tank) for #>
|
2014-08-19 08:42:09 +04:00
|
|
|
++ cell :: make %cell type
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %cell
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {hed+type tal+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- type
|
|
|
|
?:(=(%void hed) %void ?:(=(%void tal) %void [%cell hed tal]))
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ core :: make %core type
|
2013-12-09 01:23:03 +04:00
|
|
|
~/ %core
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {pac+type con+coil}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- type
|
|
|
|
?:(=(%void pac) %void [%core pac con])
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ cube :: make %cube type
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %cube
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {dil+* goq+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- type
|
|
|
|
?: =(%void goq)
|
|
|
|
%void
|
|
|
|
[%cube dil goq]
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ face :: make %face type
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %face
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {cog+term der+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- type
|
|
|
|
?: =(%void der)
|
|
|
|
%void
|
|
|
|
[%face cog der]
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ bool ^-(type [%fork [%cube 0 %atom %f] [%cube 1 %atom %f]]) :: -:!>(*?)
|
2015-06-12 20:56:30 +03:00
|
|
|
++ flay
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %flay
|
2015-12-04 04:24:39 +03:00
|
|
|
|= pok+port
|
|
|
|
^- {p+axis q+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
:- p.pok
|
|
|
|
?- -.q.pok
|
2015-12-04 04:24:39 +03:00
|
|
|
{$&} p.q.pok
|
|
|
|
{$|} (roll q.q.pok =+([p=[p=*type q=*foot] q=`type`%void] |.((fork p.p q))))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2013-12-31 23:30:37 +04:00
|
|
|
++ flee
|
2015-12-04 04:24:39 +03:00
|
|
|
|= poy+post
|
2013-12-31 23:30:37 +04:00
|
|
|
^- port
|
|
|
|
?- -.q.poy
|
2015-12-04 04:24:39 +03:00
|
|
|
$0 [p.poy %& p.q.poy]
|
|
|
|
$1 [p.poy %| p.q.poy q.q.poy]
|
|
|
|
$2 [(peg p.poy r.p.q.poy) %& s.p.q.poy]
|
2013-12-31 23:30:37 +04:00
|
|
|
==
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ foil
|
|
|
|
~/ %foil
|
2015-12-04 04:24:39 +03:00
|
|
|
|= pok+port
|
2013-09-29 00:21:18 +04:00
|
|
|
^- prop
|
|
|
|
?- -.q.pok
|
2015-12-04 04:24:39 +03:00
|
|
|
{$&} [p.pok [~ [[p.q.pok [%elm ~ 1]] ~]]]
|
|
|
|
{$|} [p.pok [p.q.pok q.q.pok]]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2013-12-09 01:23:03 +04:00
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ fork :: make %fork type
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fork
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {hoz+type bur+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- type
|
|
|
|
?: =(hoz bur)
|
|
|
|
hoz
|
|
|
|
?: =(%void hoz)
|
|
|
|
bur
|
|
|
|
?: =(%void bur)
|
|
|
|
hoz
|
|
|
|
[%fork hoz bur]
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ cove :: extract [0 *] axis
|
2015-12-04 04:24:39 +03:00
|
|
|
|= nug+nock
|
2013-09-29 00:21:18 +04:00
|
|
|
?- nug
|
2015-12-04 04:24:39 +03:00
|
|
|
{$0 *} p.nug
|
|
|
|
{$10 *} $(nug q.nug)
|
|
|
|
* ~|([%cove nug] !!)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2014-08-19 08:42:09 +04:00
|
|
|
++ comb :: combine two formulas
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %comb
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {mal+nock buz+nock}
|
2013-10-06 11:44:07 +04:00
|
|
|
^- nock
|
2015-12-04 04:24:39 +03:00
|
|
|
?: ?&(?=({$0 *} mal) !=(0 p.mal))
|
|
|
|
?: ?&(?=({$0 *} buz) !=(0 p.buz))
|
2013-09-29 00:21:18 +04:00
|
|
|
[%0 (peg p.mal p.buz)]
|
2015-12-04 04:24:39 +03:00
|
|
|
?: ?=({$2 {$0 *} {$0 *}} buz)
|
2013-09-29 00:21:18 +04:00
|
|
|
[%2 [%0 (peg p.mal p.p.buz)] [%0 (peg p.mal p.q.buz)]]
|
|
|
|
[%7 mal buz]
|
2015-12-04 04:24:39 +03:00
|
|
|
?: ?=({^ {$0 $1}} mal)
|
2013-09-29 00:21:18 +04:00
|
|
|
[%8 p.mal buz]
|
2015-12-04 04:24:39 +03:00
|
|
|
?: =({$0 $1} buz)
|
2013-09-29 00:21:18 +04:00
|
|
|
mal
|
2014-08-19 08:42:09 +04:00
|
|
|
[%7 mal buz] :: informative default
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ cond :: ?: compile
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %cond
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {pex+nock yom+nock woq+nock}
|
2013-10-06 11:44:07 +04:00
|
|
|
^- nock
|
2013-09-29 00:21:18 +04:00
|
|
|
?- pex
|
2015-12-04 04:24:39 +03:00
|
|
|
{$1 $0} yom
|
|
|
|
{$1 $1} woq
|
|
|
|
* [%6 pex yom woq]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ cons :: make formula cell
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %cons
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {vur+nock sed+nock}
|
2013-10-06 11:44:07 +04:00
|
|
|
^- nock
|
2015-12-04 04:24:39 +03:00
|
|
|
?: ?=({{$0 *} {$0 *}} +<)
|
2013-09-29 00:21:18 +04:00
|
|
|
?: ?&(=(+(p.vur) p.sed) =((div p.vur 2) (div p.sed 2)))
|
|
|
|
[%0 (div p.vur 2)]
|
|
|
|
[vur sed]
|
2015-12-04 04:24:39 +03:00
|
|
|
?: ?=({{$1 *} {$1 *}} +<)
|
2013-09-29 00:21:18 +04:00
|
|
|
[%1 p.vur p.sed]
|
2013-12-09 01:23:03 +04:00
|
|
|
[vur sed]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ fitz :: odor compatibility
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %fitz
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {yaz+term wix+term}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ ^= fiz
|
2015-12-04 04:24:39 +03:00
|
|
|
|= mot+@ta ^- {p+@ q+@ta}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ len=(met 3 mot)
|
|
|
|
?: =(0 len)
|
|
|
|
[0 %$]
|
|
|
|
=+ tyl=(rsh 3 (dec len) mot)
|
|
|
|
?: &((gte tyl 'A') (lte tyl 'Z'))
|
|
|
|
[(sub tyl 64) (end 3 (dec len) mot)]
|
|
|
|
[0 mot]
|
|
|
|
=+ [yoz=(fiz yaz) wux=(fiz wix)]
|
|
|
|
?& ?| =(0 p.yoz)
|
|
|
|
=(0 p.wux)
|
|
|
|
&(!=(0 p.wux) (lte p.wux p.yoz))
|
|
|
|
==
|
2013-12-09 01:23:03 +04:00
|
|
|
|- ?| =(%$ p.yoz)
|
2013-09-29 00:21:18 +04:00
|
|
|
=(%$ p.wux)
|
|
|
|
?& =((end 3 1 p.yoz) (end 3 1 p.wux))
|
|
|
|
$(p.yoz (rsh 3 1 p.yoz), p.wux (rsh 3 1 p.wux))
|
|
|
|
==
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ flan :: loobean &
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %flan
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {bos+nock nif+nock}
|
2013-10-06 11:44:07 +04:00
|
|
|
^- nock
|
2013-09-29 00:21:18 +04:00
|
|
|
?- bos
|
2015-12-04 04:24:39 +03:00
|
|
|
{$1 $1} bos
|
|
|
|
{$1 $0} nif
|
2013-09-29 00:21:18 +04:00
|
|
|
*
|
|
|
|
?- nif
|
2015-12-04 04:24:39 +03:00
|
|
|
{$1 $1} nif
|
|
|
|
{$1 $0} bos
|
2013-09-29 00:21:18 +04:00
|
|
|
* [%6 bos nif [%1 1]]
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ flip :: loobean negation
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %flip
|
2015-12-04 04:24:39 +03:00
|
|
|
|= dyr+nock
|
2013-09-29 00:21:18 +04:00
|
|
|
[%6 dyr [%1 1] [%1 0]]
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ flor :: loobean |
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %flor
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {bos+nock nif+nock}
|
2013-10-06 11:44:07 +04:00
|
|
|
^- nock
|
2013-09-29 00:21:18 +04:00
|
|
|
?- bos
|
2015-12-04 04:24:39 +03:00
|
|
|
{$1 $1} nif
|
|
|
|
{$1 $0} bos
|
2013-09-29 00:21:18 +04:00
|
|
|
*
|
|
|
|
?- nif
|
2015-12-04 04:24:39 +03:00
|
|
|
{$1 $1} bos
|
|
|
|
{$1 $0} nif
|
|
|
|
* [%6 bos [%1 0] nif]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2013-12-09 01:23:03 +04:00
|
|
|
++ hike
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %hike
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {axe+axis pac+(list {p+axis q+nock})}
|
2013-10-06 11:44:07 +04:00
|
|
|
^- nock
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ pac
|
|
|
|
[%0 axe]
|
2015-12-04 04:24:39 +03:00
|
|
|
=+ zet=(skim pac.$ |=({p+axis q+nock} [=(1 p)]))
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ zet
|
2015-12-04 04:24:39 +03:00
|
|
|
=+ tum=(skim pac.$ |=({p+axis q+nock} ?&(!=(1 p) =(2 (cap p)))))
|
|
|
|
=+ gam=(skim pac.$ |=({p+axis q+nock} ?&(!=(1 p) =(3 (cap p)))))
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ cons
|
|
|
|
%= $
|
2014-01-04 11:28:16 +04:00
|
|
|
axe (peg axe 2)
|
2015-12-08 04:46:28 +03:00
|
|
|
pac (turn tum |=({p+axis q+nock} [(mas p) q]))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
%= $
|
2014-01-04 11:28:16 +04:00
|
|
|
axe (peg axe 3)
|
2015-12-08 04:46:28 +03:00
|
|
|
pac (turn gam |=({p+axis q+nock} [(mas p) q]))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2015-12-04 04:24:39 +03:00
|
|
|
?>(?=({* $~} zet) q.i.zet)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ jock
|
2015-12-04 04:24:39 +03:00
|
|
|
|= rad+?
|
|
|
|
|= lot+coin ^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
?- -.lot
|
2015-12-08 05:04:19 +03:00
|
|
|
$~
|
|
|
|
?:(rad [%dtzz p.lot] [%dtzy p.lot])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
$blob
|
2013-12-09 01:23:03 +04:00
|
|
|
?: rad
|
2014-01-05 07:56:33 +04:00
|
|
|
[%dtzz %$ p.lot]
|
|
|
|
?@(p.lot [%dtzy %$ p.lot] [$(p.lot -.p.lot) $(p.lot +.p.lot)])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
$many
|
2015-12-05 02:59:29 +03:00
|
|
|
[%cltr (turn p.lot |=(a+coin ^$(lot a)))]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ look
|
|
|
|
~/ %look
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {cog+term dab+(map term foot)}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ axe=1
|
2015-12-04 04:24:39 +03:00
|
|
|
|- ^- (unit {p+axis q+foot})
|
2013-09-29 00:21:18 +04:00
|
|
|
?- dab
|
2015-12-04 04:24:39 +03:00
|
|
|
$~ ~
|
|
|
|
::
|
|
|
|
{* $~ $~}
|
2013-09-29 00:21:18 +04:00
|
|
|
?:(=(cog p.n.dab) [~ axe q.n.dab] ~)
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{* $~ *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(cog p.n.dab)
|
|
|
|
[~ (peg axe 2) q.n.dab]
|
|
|
|
?: (gor cog p.n.dab)
|
|
|
|
~
|
|
|
|
$(axe (peg axe 3), dab r.dab)
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{* * $~}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(cog p.n.dab)
|
|
|
|
[~ (peg axe 2) q.n.dab]
|
|
|
|
?: (gor cog p.n.dab)
|
|
|
|
$(axe (peg axe 3), dab l.dab)
|
|
|
|
~
|
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
{* * *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(cog p.n.dab)
|
|
|
|
[~ (peg axe 2) q.n.dab]
|
|
|
|
?: (gor cog p.n.dab)
|
|
|
|
$(axe (peg axe 6), dab l.dab)
|
|
|
|
$(axe (peg axe 7), dab r.dab)
|
|
|
|
==
|
2013-12-09 01:23:03 +04:00
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ make :: compile cord to nock
|
2015-12-04 04:24:39 +03:00
|
|
|
|= txt+@
|
2013-12-09 01:23:03 +04:00
|
|
|
q:(~(mint ut %noun) %noun (ream txt))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
++ noah |=(vax+vase (pave vax)) :: $+(vase tape) for #<
|
|
|
|
++ onan |=(vix+vise (seer vix)) :: $+(vise vase) for !>
|
2014-08-19 08:42:09 +04:00
|
|
|
++ rain :: parse with % path
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {bon+path txt+@}
|
2014-03-05 23:00:27 +04:00
|
|
|
^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vaz=vast
|
2014-02-10 21:50:20 +04:00
|
|
|
~| bon
|
2013-09-29 00:21:18 +04:00
|
|
|
(scan (trip txt) (full (ifix [gay gay] tall:vaz(wer bon))))
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ ream :: parse cord to twig
|
2015-12-04 04:24:39 +03:00
|
|
|
|= txt+@
|
2013-12-15 11:07:57 +04:00
|
|
|
^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
(rash txt vest)
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ reck :: parse hoon file
|
2015-12-04 04:24:39 +03:00
|
|
|
|= bon+path
|
2015-12-04 18:16:34 +03:00
|
|
|
(rain bon ((hard @t) .^(%cx (weld bon `path`[%hoon ~]))))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ seed :: hoon/hoon core vase
|
2013-09-29 00:21:18 +04:00
|
|
|
^- vase
|
2015-02-08 10:40:09 +03:00
|
|
|
!!
|
2015-06-12 20:56:30 +03:00
|
|
|
:: ~+ :: trimmed
|
2015-02-08 10:40:09 +03:00
|
|
|
:: !;(*type ..seed)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 04:24:39 +03:00
|
|
|
++ seem |=(toy+typo `type`toy) :: promote typo
|
|
|
|
++ seer |=(vix+vise `vase`vix) :: promote vise
|
2014-08-19 08:42:09 +04:00
|
|
|
++ sell :: tank pretty-print
|
2015-12-04 04:24:39 +03:00
|
|
|
|= vax+vase ^- tank
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %sell
|
2015-01-10 00:02:47 +03:00
|
|
|
(~(deal ut p.vax) q.vax)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ pave :: tape pretty-print
|
2015-12-04 04:24:39 +03:00
|
|
|
|= vax+vase ^- tape
|
2013-09-29 00:21:18 +04:00
|
|
|
~(ram re (sell vax))
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ slam :: slam a gate
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {gat+vase sam+vase} ^- vase
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ :- ^= typ ^- type
|
|
|
|
[%cell p.gat p.sam]
|
2013-12-15 11:07:57 +04:00
|
|
|
^= gen ^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
[%cncl [~ 2] [~ 3]]
|
|
|
|
=+ gun=(~(mint ut typ) %noun gen)
|
|
|
|
[p.gun .*([q.gat q.sam] q.gun)]
|
2013-12-09 01:23:03 +04:00
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ slim :: identical to seer?
|
2015-12-04 04:24:39 +03:00
|
|
|
|= old+vise ^- vase
|
2013-09-29 00:21:18 +04:00
|
|
|
old
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ slit :: type of slam
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {gat+type sam+type}
|
2014-06-11 18:06:36 +04:00
|
|
|
?> (~(nest ut (~(peek ut gat) %free 6)) & sam)
|
2013-09-29 00:21:18 +04:00
|
|
|
(~(play ut [%cell gat sam]) [%cncl [~ 2] [~ 3]])
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ slym :: slam w/o sample-type
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {gat+vase sam+*} ^- vase
|
2014-04-29 02:24:32 +04:00
|
|
|
(slap gat(+<.q sam) [%cnzy %$])
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ slap
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {vax+vase gen+twig} ^- vase :: untyped vase .*
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ gun=(~(mint ut p.vax) %noun gen)
|
|
|
|
[p.gun .*(q.vax q.gun)]
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ slop :: cons two vases
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {hed+vase tal+vase}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- vase
|
|
|
|
[[%cell p.hed p.tal] [q.hed q.tal]]
|
2013-12-09 01:23:03 +04:00
|
|
|
::
|
2015-12-04 02:53:57 +03:00
|
|
|
++ skol :: $+(type tank) for ~!
|
2015-12-04 04:24:39 +03:00
|
|
|
|= typ+type ^- tank
|
2013-09-29 00:21:18 +04:00
|
|
|
~(duck ut typ)
|
|
|
|
::
|
2014-06-04 14:40:09 +04:00
|
|
|
++ spec :: reconstruct type
|
2015-12-04 04:24:39 +03:00
|
|
|
|= vax+vase
|
2014-05-26 00:35:07 +04:00
|
|
|
^- vase
|
2014-05-31 00:57:49 +04:00
|
|
|
:_ q.vax
|
|
|
|
?@ q.vax (~(fuse ut p.vax) [%atom %$])
|
2014-06-07 05:09:44 +04:00
|
|
|
?@ -.q.vax
|
2014-06-04 14:40:09 +04:00
|
|
|
^= typ
|
2014-06-07 05:09:44 +04:00
|
|
|
%- ~(play ut p.vax)
|
2014-06-04 14:40:09 +04:00
|
|
|
[%wtgr [%wtts [%leaf %tas -.q.vax] [%$ 2]~] [%$ 1]]
|
2014-05-31 00:57:49 +04:00
|
|
|
(~(fuse ut p.vax) [%cell %noun %noun])
|
|
|
|
::
|
2015-01-13 01:49:05 +03:00
|
|
|
++ slew :: get axis in vase
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {axe+@ vax+vase} ^- (unit vase)
|
2015-01-13 01:49:05 +03:00
|
|
|
?. |- ^- ?
|
|
|
|
?: =(1 axe) &
|
|
|
|
?. ?=(^ q.vax) |
|
|
|
|
$(axe (mas axe), q.vax .*(q.vax [0 (cap axe)]))
|
|
|
|
~
|
|
|
|
`[(~(peek ut p.vax) %free axe) .*(q.vax [0 axe])]
|
|
|
|
::
|
2015-06-12 20:56:30 +03:00
|
|
|
++ slab
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {cog+@tas typ+type}
|
2014-07-29 02:46:03 +04:00
|
|
|
!=(~ q:(~(fino ut typ) 0 %free cog))
|
|
|
|
::
|
2015-05-07 04:41:20 +03:00
|
|
|
++ slob :: superficial arm
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {cog+@tas typ+type}
|
2015-05-07 04:41:20 +03:00
|
|
|
^- ?
|
|
|
|
?+ typ |
|
2015-12-04 04:24:39 +03:00
|
|
|
{$hold *} $(typ ~(repo ut typ))
|
|
|
|
{$core *} (~(has by q.r.q.typ) cog)
|
2015-05-07 04:41:20 +03:00
|
|
|
==
|
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ sloe :: get arms in core
|
2015-12-04 04:24:39 +03:00
|
|
|
|= typ+type
|
2014-07-29 02:46:03 +04:00
|
|
|
^- (list term)
|
|
|
|
?+ typ ~
|
2015-12-04 04:24:39 +03:00
|
|
|
{$hold *} $(typ ~(repo ut typ))
|
|
|
|
{$bull *} $(typ ~(repo ut typ))
|
|
|
|
{$core *}
|
2015-12-08 04:46:28 +03:00
|
|
|
(turn (~(tap by q.r.q.typ) ~) |=({a+term *} a))
|
2014-07-29 02:46:03 +04:00
|
|
|
==
|
2014-08-19 08:42:09 +04:00
|
|
|
++ slot :: got axis in vase
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {axe+@ vax+vase} ^- vase
|
2014-05-31 00:57:49 +04:00
|
|
|
[(~(peek ut p.vax) %free axe) .*(q.vax [0 axe])]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-08-19 08:42:09 +04:00
|
|
|
++ wash :: render tank at width
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {{tab+@ edg+@} tac+tank} ^- wall
|
2013-12-09 01:23:03 +04:00
|
|
|
(~(win re tac) tab edg)
|
2015-01-15 22:10:29 +03:00
|
|
|
::
|
2015-10-27 01:26:49 +03:00
|
|
|
++ wa !: :: cached compile
|
2015-01-15 22:10:29 +03:00
|
|
|
|_ worm
|
2015-12-04 04:24:39 +03:00
|
|
|
++ nell |=(ref+type (nest [%cell %noun %noun] ref)) :: nest in cell
|
2015-01-15 22:10:29 +03:00
|
|
|
++ nest :: nest:ut
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {sut+type ref+type}
|
|
|
|
^- {? worm}
|
2015-01-15 22:10:29 +03:00
|
|
|
?: (~(has in nes) [sut ref]) [& +>+<]
|
2015-06-12 20:56:30 +03:00
|
|
|
?. (~(nest ut sut) | ref)
|
2015-03-06 01:58:04 +03:00
|
|
|
:: ~& %nest-failed
|
|
|
|
[| +>+<]
|
2015-01-15 22:10:29 +03:00
|
|
|
[& +>+<(nes (~(put in nes) [sut ref]))]
|
|
|
|
::
|
|
|
|
++ nets :: typeless nest
|
2015-12-04 04:24:39 +03:00
|
|
|
|= {sut+type ref+*}
|
|
|
|
^- {? worm}
|
2015-01-15 22:10:29 +03:00
|
|
|
?: (~(has in nes) [sut ref]) [& +>+<]
|
2015-12-08 04:46:28 +03:00
|
|
|
=+ gat=|=({a+type b+type} (~(nest ut a) | b))
|
2015-01-15 22:10:29 +03:00
|
|
|
?. (,? .*(gat(+< [sut ref]) -.gat))
|
2015-03-06 01:58:04 +03:00
|
|
|
:: ~& %nets-failed
|
|
|
|
:: =+ tag=`*`skol
|
|
|
|
:: =+ foo=(tank .*(tag(+< ref) -.tag))
|
|
|
|
:: =+ bar=(skol sut)
|
|
|
|
:: ~& %nets-need
|
|
|
|
:: ~> %slog.[0 bar]
|
|
|
|
:: ~& %nets-have
|
|
|
|
:: ~> %slog.[0 foo]
|
2015-01-15 22:10:29 +03:00
|
|
|
[| +>+<.$]
|
|
|
|
[& +>+<.$(nes (~(put in nes) [sut ref]))]
|
|
|
|
::
|
|
|
|
++ play :: play:ut
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {sut+type gen+twig}
|
|
|
|
^- {type worm}
|
2015-01-15 22:10:29 +03:00
|
|
|
=+ old=(~(get by pay) [sut gen])
|
|
|
|
?^ old [u.old +>+<.$]
|
|
|
|
=+ new=(~(play ut sut) gen)
|
|
|
|
[new +>+<.$(pay (~(put by pay) [sut gen] new))]
|
|
|
|
::
|
|
|
|
++ mint :: mint:ut to noun
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {sut+type gen+twig}
|
|
|
|
^- {(pair type nock) worm}
|
2015-01-15 22:10:29 +03:00
|
|
|
=+ old=(~(get by mit) [sut gen])
|
|
|
|
?^ old [u.old +>+<.$]
|
|
|
|
=+ new=(~(mint ut sut) %noun gen)
|
|
|
|
[new +>+<.$(mit (~(put by mit) [sut gen] new))]
|
|
|
|
::
|
|
|
|
++ slap :: ++slap, cached
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {vax+vase gen+twig}
|
|
|
|
^- {vase worm}
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ gun +>+< (mint p.vax gen)
|
|
|
|
[[p.gun .*(q.vax q.gun)] +>+<.$]
|
|
|
|
::
|
|
|
|
++ slot :: ++slot, cached
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {axe+@ vax+vase}
|
|
|
|
^- {vase worm}
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ gun +>+< (mint p.vax [%$ axe])
|
|
|
|
[[p.gun .*(q.vax [0 axe])] +>+<.$]
|
|
|
|
::
|
|
|
|
++ spec :: specialize vase
|
2015-12-04 18:16:34 +03:00
|
|
|
|= vax+vase
|
|
|
|
^- {vase worm}
|
2015-06-12 20:56:30 +03:00
|
|
|
=+ ^= gen ^- twig
|
2015-01-15 22:10:29 +03:00
|
|
|
?@ q.vax [%wtts [%axil [%atom %$]] [%$ 1]~]
|
|
|
|
?@ -.q.vax [%wtts [%leaf %tas -.q.vax] [%$ 2]~]
|
|
|
|
[%wtts [%axil %cell] [%$ 1]~]
|
|
|
|
=^ typ +>+<.$ (play p.vax [%wtgr gen [%$ 1]])
|
|
|
|
[[typ q.vax] +>+<.$]
|
|
|
|
::
|
2015-10-26 23:30:13 +03:00
|
|
|
++ spot :: slot then spec
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {axe+@ vax+vase}
|
|
|
|
^- {vase worm}
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ xav +>+< (slot axe vax)
|
|
|
|
(spec xav)
|
2015-10-26 23:30:13 +03:00
|
|
|
::
|
|
|
|
++ stop :: spec then slot
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {axe+@ vax+vase}
|
|
|
|
^- {vase worm}
|
2015-10-26 23:30:13 +03:00
|
|
|
=^ xav +>+< (spec vax)
|
|
|
|
(slot axe xav)
|
2015-01-15 22:10:29 +03:00
|
|
|
--
|
2015-10-27 00:36:22 +03:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2013-09-29 00:21:18 +04:00
|
|
|
:: section 2fB, macro expansion ::
|
|
|
|
::
|
2014-10-31 06:13:40 +03:00
|
|
|
++ ah :: tiki engine
|
2015-12-04 18:16:34 +03:00
|
|
|
|_ tig+tiki
|
2014-01-04 06:59:56 +04:00
|
|
|
++ blue
|
2015-12-04 18:16:34 +03:00
|
|
|
|= gen+twig
|
2014-01-04 06:59:56 +04:00
|
|
|
^- twig
|
2015-12-08 05:04:19 +03:00
|
|
|
?. &(?=($| -.tig) ?=($~ p.tig)) gen
|
2014-01-04 06:59:56 +04:00
|
|
|
[%tsgr [~ 3] gen]
|
|
|
|
::
|
2014-10-31 06:13:40 +03:00
|
|
|
++ pink
|
2015-12-04 18:16:34 +03:00
|
|
|
|= tyl+tile
|
2014-10-31 06:13:40 +03:00
|
|
|
^- tile
|
2015-12-08 05:04:19 +03:00
|
|
|
?. &(?=($| -.tig) ?=($~ p.tig)) tyl
|
2014-10-31 06:13:40 +03:00
|
|
|
?- -.tyl
|
2015-12-08 04:23:27 +03:00
|
|
|
?($leaf $axil) tyl
|
|
|
|
$herb [%herb [%tsgr [~ 3] p.tyl]]
|
|
|
|
$weed [%weed [%tsgr [~ 3] p.tyl]]
|
2014-10-31 06:13:40 +03:00
|
|
|
* [%herb [%tsgr [~ 3] [%bccm tyl]]]
|
|
|
|
==
|
|
|
|
::
|
2014-01-04 06:59:56 +04:00
|
|
|
++ gray
|
2015-12-04 18:16:34 +03:00
|
|
|
|= gen+twig
|
2014-01-04 06:59:56 +04:00
|
|
|
^- twig
|
|
|
|
?- -.tig
|
2015-12-04 18:16:34 +03:00
|
|
|
{$&} ?~(p.tig gen [%tstr u.p.tig q.tig gen])
|
|
|
|
{$|} [%tsls ?~(p.tig q.tig [%ktts u.p.tig q.tig]) gen]
|
2014-01-04 06:59:56 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ puce
|
|
|
|
^- wing
|
|
|
|
?- -.tig
|
2015-12-04 18:16:34 +03:00
|
|
|
{$&} ?~(p.tig q.tig [u.p.tig ~])
|
|
|
|
{$|} [[%& 2] ~]
|
2014-01-04 06:59:56 +04:00
|
|
|
==
|
|
|
|
--
|
|
|
|
::
|
2014-10-31 06:13:40 +03:00
|
|
|
++ al :: tile engine
|
2013-12-27 06:43:25 +04:00
|
|
|
~% %al
|
|
|
|
+>+
|
|
|
|
==
|
|
|
|
%bunt bunt
|
2014-01-04 11:28:16 +04:00
|
|
|
%whip whip
|
2013-12-27 06:43:25 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ [nag=`*`& gom=`axis`1]
|
|
|
|
|_ sec=tile
|
|
|
|
::::
|
2014-01-05 07:56:33 +04:00
|
|
|
++ blah ^~ [%dtzz %$ 0]
|
2015-12-04 18:16:34 +03:00
|
|
|
++ home |=(gen+twig ^-(twig ?:(=(1 gom) gen [%tsgr [~ gom] gen])))
|
2013-09-29 00:21:18 +04:00
|
|
|
::::
|
|
|
|
++ bunt
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
?- sec
|
2015-12-04 18:16:34 +03:00
|
|
|
{^ *}
|
2013-09-29 00:21:18 +04:00
|
|
|
[$(sec p.sec) $(sec q.sec)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$axil *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?- p.sec
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *} [%dtzy p.p.sec 0]
|
|
|
|
$noun [%dttr [%dtzz %$ 0] [[%dtzz %$ 0] [%dtzz %$ 1]]]
|
|
|
|
$cell =+(nec=$(sec [%axil %noun]) [nec nec])
|
|
|
|
$bean [%dtts [%dtzz %$ 0] [%dtzz %$ 0]]
|
|
|
|
$void [%zpzp ~]
|
|
|
|
$null [%dtzz %n %$]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bark *}
|
2013-09-29 00:21:18 +04:00
|
|
|
[%ktts p.sec $(sec q.sec)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bush *}
|
2013-12-16 03:40:44 +04:00
|
|
|
[%wtcl [%bczp %bean] $(sec p.sec) $(sec q.sec)]
|
2013-12-09 01:23:03 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$fern *}
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ t.p.sec
|
2013-09-29 00:21:18 +04:00
|
|
|
^$(sec i.p.sec)
|
2013-12-16 03:40:44 +04:00
|
|
|
[%wtcl [%bczp %bean] ^$(sec i.p.sec) $(p.sec t.p.sec)]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$herb *}
|
2015-11-30 16:23:47 +03:00
|
|
|
=+ cys=~(boil ap p.sec)
|
2015-12-04 18:16:34 +03:00
|
|
|
?: ?=($herb -.cys)
|
2015-11-30 16:23:47 +03:00
|
|
|
(home [%tsgl [%cnzy %$] p.sec])
|
|
|
|
$(sec cys)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$kelp *}
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ t.p.sec
|
2013-09-29 00:21:18 +04:00
|
|
|
^$(sec i.p.sec)
|
2013-12-16 03:40:44 +04:00
|
|
|
[%wtcl [%bczp %bean] ^$(sec i.p.sec) $(p.sec t.p.sec)]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$leaf *}
|
2014-01-05 07:56:33 +04:00
|
|
|
[%dtzz p.sec q.sec]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$reed *}
|
2013-12-16 03:40:44 +04:00
|
|
|
[%wtcl [%bczp %bean] $(sec p.sec) $(sec q.sec)]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$weed *}
|
2013-09-29 00:21:18 +04:00
|
|
|
(home p.sec)
|
|
|
|
==
|
2013-12-17 08:48:40 +04:00
|
|
|
++ clam ^-(twig [%brts [%axil %noun] (whip(gom 7) 6)])
|
2013-12-21 02:26:23 +04:00
|
|
|
++ cloq
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- {p+toga q+tile}
|
|
|
|
=. sec ?.(?=($herb -.sec) sec ~(boil ap p.sec))
|
2013-12-21 02:26:23 +04:00
|
|
|
?: ?=(^ -.sec)
|
|
|
|
=+ [one=$(sec p.sec) two=$(sec q.sec)]
|
|
|
|
[[%2 p.one p.two] [q.one q.two]]
|
2015-12-04 18:16:34 +03:00
|
|
|
?. ?=($bark -.sec) [[%0 ~] sec]
|
2013-12-21 02:26:23 +04:00
|
|
|
=+ got=$(sec q.sec)
|
|
|
|
:_ q.got
|
2015-12-04 18:16:34 +03:00
|
|
|
?:(?=({$0 $~} p.got) p.sec [%1 p.sec p.got])
|
2013-12-21 02:26:23 +04:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ whip
|
|
|
|
|= axe=axis
|
|
|
|
=+ ^= tun
|
2015-12-04 18:16:34 +03:00
|
|
|
|= noy+_+(* twig)
|
2013-12-15 11:07:57 +04:00
|
|
|
^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
?@ nag
|
2013-12-16 00:52:24 +04:00
|
|
|
=+ luz=[%cnts [[~ 1] ~] [[[%& axe] ~] bunt(sec [%axil %cell])] ~]
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(& nag)
|
2014-01-01 10:48:21 +04:00
|
|
|
[%tsgr [%wtpt [[%& axe] ~] luz [~ 1]] (noy [& &])]
|
2013-09-29 00:21:18 +04:00
|
|
|
[%tsgr luz (noy [& &])]
|
|
|
|
(noy nag)
|
2013-12-15 11:07:57 +04:00
|
|
|
^- twig
|
2013-12-09 01:23:03 +04:00
|
|
|
?- sec
|
2015-12-04 18:16:34 +03:00
|
|
|
{^ *}
|
2013-12-15 11:07:57 +04:00
|
|
|
%- tun |= gon=* => .(nag gon) ^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
:- ^$(sec -.sec, nag -.nag, axe (peg axe 2))
|
|
|
|
^$(sec +.sec, nag +.nag, axe (peg axe 3))
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$axil *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?- p.sec
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ buv=bunt
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
?@ nag
|
2014-01-01 10:48:21 +04:00
|
|
|
?:(=(& nag) [%wtpt [[%& axe] ~] $(nag |) buv] [%ktls buv [~ axe]])
|
2013-09-29 00:21:18 +04:00
|
|
|
buv
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$noun
|
2013-12-16 00:52:24 +04:00
|
|
|
[%kthp [%axil %noun] [~ axe]]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$cell
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ buv=bunt
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig
|
2013-12-09 01:23:03 +04:00
|
|
|
?@ nag
|
2014-01-01 10:48:21 +04:00
|
|
|
?:(=(& nag) [%wtpt [[%& axe] ~] buv $(nag [& &])] buv)
|
2013-09-29 00:21:18 +04:00
|
|
|
[%ktls buv [~ axe]]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$bean
|
2013-09-29 00:21:18 +04:00
|
|
|
:^ %wtcl
|
2014-01-05 07:56:33 +04:00
|
|
|
[%dtts [%dtzz %$ |] [~ axe]]
|
|
|
|
[%dtzz %f |]
|
|
|
|
[%dtzz %f &]
|
2015-11-30 07:42:25 +03:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$void
|
2015-11-30 07:42:25 +03:00
|
|
|
bunt
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$null
|
2013-12-09 01:23:03 +04:00
|
|
|
bunt
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bark *}
|
2013-09-29 00:21:18 +04:00
|
|
|
[%ktts p.sec $(sec q.sec)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bush *}
|
2013-12-16 22:53:22 +04:00
|
|
|
%- tun |= gon=* => .(nag gon) ^- twig
|
|
|
|
?@ -.nag
|
|
|
|
?: =(& -.nag)
|
2014-01-01 10:48:21 +04:00
|
|
|
[%wtpt [[%& (peg axe 2)] ~] ^$(sec q.sec) ^$(sec p.sec)]
|
2013-12-16 22:53:22 +04:00
|
|
|
^$(sec q.sec)
|
|
|
|
^$(sec p.sec)
|
2013-12-09 01:23:03 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$fern *}
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ t.p.sec
|
2013-09-29 00:21:18 +04:00
|
|
|
^$(sec i.p.sec)
|
|
|
|
:+ %tsls
|
|
|
|
^$(sec i.p.sec)
|
|
|
|
=> .(axe (peg 3 axe), gom (peg 3 gom))
|
|
|
|
:^ %wtcl
|
|
|
|
[%dtts [~ axe] [~ 2]]
|
|
|
|
[~ 2]
|
|
|
|
$(i.p.sec i.t.p.sec, t.p.sec t.t.p.sec)
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$herb *}
|
2015-11-30 16:23:47 +03:00
|
|
|
=+ cys=~(boil ap p.sec)
|
2015-12-04 18:16:34 +03:00
|
|
|
?: ?=($herb -.cys)
|
2015-11-30 16:23:47 +03:00
|
|
|
[%cnhp (home p.sec) [~ axe] ~]
|
|
|
|
$(sec cys)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$kelp *}
|
2013-12-09 01:23:03 +04:00
|
|
|
%- tun |= gon=* => .(nag gon)
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ t.p.sec
|
2014-01-05 07:56:33 +04:00
|
|
|
:- [%dtzz +.p.i.p.sec]
|
2013-09-29 00:21:18 +04:00
|
|
|
^^$(axe (peg axe 3), sec q.i.p.sec, nag &)
|
|
|
|
:^ %wtcl
|
2014-01-05 07:56:33 +04:00
|
|
|
[%dtts [~ (peg axe 2)] [%dtzz +.p.i.p.sec]]
|
|
|
|
:- [%dtzz +.p.i.p.sec]
|
2013-09-29 00:21:18 +04:00
|
|
|
^^$(axe (peg axe 3), sec q.i.p.sec, nag &)
|
|
|
|
$(i.p.sec i.t.p.sec, t.p.sec t.t.p.sec)
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$leaf *}
|
2014-01-05 07:56:33 +04:00
|
|
|
[%dtzz p.sec q.sec]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$reed *}
|
2013-12-16 22:53:22 +04:00
|
|
|
?- nag
|
2015-12-08 05:04:19 +03:00
|
|
|
{$&} [%wtpt [[%& axe] ~] $(sec p.sec, nag |) $(sec q.sec, nag [& &])]
|
|
|
|
{$|} $(sec p.sec)
|
|
|
|
^ $(sec q.sec)
|
|
|
|
* !!
|
2013-12-16 22:53:22 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$weed *}
|
2014-01-16 10:43:56 +04:00
|
|
|
(home p.sec)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2013-12-09 01:23:03 +04:00
|
|
|
--
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-10-31 06:13:40 +03:00
|
|
|
++ ap :: twig engine
|
2013-12-09 01:23:03 +04:00
|
|
|
~% %ap
|
2013-09-29 00:21:18 +04:00
|
|
|
+>
|
|
|
|
==
|
|
|
|
%etch etch
|
|
|
|
%open open
|
|
|
|
%rake rake
|
|
|
|
==
|
2013-12-15 11:07:57 +04:00
|
|
|
|_ gen=twig
|
2013-09-29 00:21:18 +04:00
|
|
|
++ etch
|
|
|
|
~| %etch
|
|
|
|
|- ^- term
|
2015-12-04 18:16:34 +03:00
|
|
|
?: ?=({$ktts *} gen)
|
2013-12-18 05:47:20 +04:00
|
|
|
?>(?=(@ p.gen) p.gen)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ voq=~(open ap gen)
|
|
|
|
?<(=(gen voq) $(gen voq))
|
|
|
|
::
|
2014-01-04 11:28:16 +04:00
|
|
|
++ feck
|
|
|
|
|- ^- (unit term)
|
|
|
|
?- gen
|
2015-12-04 18:16:34 +03:00
|
|
|
{$dtzy $tas *} [~ q.gen]
|
|
|
|
{$dtzz $tas @} [~ q.gen]
|
|
|
|
{$zpcb *} $(gen q.gen)
|
2014-01-04 11:28:16 +04:00
|
|
|
* ~
|
|
|
|
==
|
|
|
|
::
|
2013-12-21 04:59:03 +04:00
|
|
|
++ hock
|
2014-01-16 10:43:56 +04:00
|
|
|
|- ^- toga
|
2013-12-17 23:13:44 +04:00
|
|
|
?- gen
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cnts {@ $~} $~} i.p.gen
|
|
|
|
{$cnzy @} p.gen
|
|
|
|
{$cnzz {@ $~}} i.p.gen
|
|
|
|
{$zpcb *} $(gen q.gen)
|
|
|
|
{@ *} =+(neg=open ?:(=(gen neg) [%0 ~] $(gen neg)))
|
|
|
|
{^ *} =+ toe=[$(gen p.gen) $(gen q.gen)]
|
|
|
|
?:(=(toe [[%0 ~] [%0 ~]]) [%0 ~] [%2 toe])
|
2013-12-17 23:13:44 +04:00
|
|
|
==
|
|
|
|
::
|
2015-11-30 07:42:25 +03:00
|
|
|
++ bile
|
|
|
|
^- (each line tile)
|
|
|
|
=+ boil
|
2015-12-04 18:16:34 +03:00
|
|
|
?: ?=({{$leaf *} *} -)
|
2015-11-30 07:42:25 +03:00
|
|
|
[%& [%leaf p.p.- q.p.-] q.-]
|
|
|
|
[%| -]
|
|
|
|
::
|
|
|
|
++ boil
|
|
|
|
^- tile
|
|
|
|
?+ gen [%herb gen]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cbbr *} [%reed boil(gen p.gen) boil(gen q.gen)]
|
|
|
|
{$cbcb *} [%weed p.gen]
|
|
|
|
{$cbcl *}
|
2015-11-30 07:42:25 +03:00
|
|
|
|- ^- tile
|
|
|
|
?~ p.gen [%axil %null]
|
|
|
|
?~ t.p.gen boil(gen i.p.gen)
|
|
|
|
[boil(gen i.p.gen) $(p.gen t.p.gen)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cbcn *}
|
2015-11-30 07:42:25 +03:00
|
|
|
?~ p.gen
|
|
|
|
[%axil %void]
|
|
|
|
?~ t.p.gen
|
|
|
|
boil(gen i.p.gen)
|
|
|
|
=+ :* def=bile(gen i.p.gen)
|
|
|
|
^= end ^- (list line)
|
|
|
|
%+ turn `(list twig)`t.p.gen
|
2015-12-08 04:23:27 +03:00
|
|
|
|=(a+twig =+(bile(gen a) ?>(?=($& -<) ->)))
|
2015-11-30 07:42:25 +03:00
|
|
|
==
|
|
|
|
?- -.def
|
2015-12-04 18:16:34 +03:00
|
|
|
{$&} [%kelp p.def end]
|
|
|
|
{$|} ?~(end p.def [%fern p.def [%kelp end] ~])
|
2015-11-30 07:42:25 +03:00
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cbpm *} [%bush boil(gen p.gen) boil(gen q.gen)]
|
|
|
|
{$cbls *} [%weed [%brls [%herb p.gen] [%bctr %herb q.gen]]]
|
|
|
|
{$cbts *} [%bark p.gen boil(gen q.gen)]
|
2015-12-05 02:59:29 +03:00
|
|
|
{$cbwt *} =+ (turn p.gen |=(a+twig boil(gen a)))
|
2015-11-30 07:42:25 +03:00
|
|
|
?~(- [%axil %void] [%fern -])
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cbzy *} [%leaf p.gen]
|
|
|
|
{$cbzz *} [%axil p.gen]
|
|
|
|
{$ktts *} ?. ?=(@ p.gen)
|
2015-11-30 16:23:47 +03:00
|
|
|
[%herb gen] :: XX dubious
|
|
|
|
[%bark p.gen boil(gen q.gen)]
|
2015-12-04 18:16:34 +03:00
|
|
|
{$zpcb *} boil(gen q.gen)
|
2015-11-30 07:42:25 +03:00
|
|
|
==
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ open
|
2013-12-15 11:07:57 +04:00
|
|
|
^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
?- gen
|
2015-12-04 18:16:34 +03:00
|
|
|
{$~ *} [%cnts [gen ~] ~]
|
|
|
|
{$bccm *} ~(clam al p.gen)
|
|
|
|
{$bctr *} [%ktsg ~(bunt al p.gen)]
|
|
|
|
{$bczp *} [%bctr %axil p.gen]
|
|
|
|
{$brcb *} [%tsls [%bctr p.gen] [%brcn q.gen]]
|
|
|
|
{$brcl *} [%tsls [%ktsg p.gen] [%brdt q.gen]]
|
|
|
|
{$brdt *} [%brcn (~(put by *(map term foot)) %$ [%ash p.gen])]
|
|
|
|
{$brtr *} [%brfs p.gen (~(put by *(map term foot)) %$ [%elm q.gen])]
|
|
|
|
{$brfs *} ~| %elm-tile
|
2013-12-21 04:59:03 +04:00
|
|
|
=+ lyg=~(cloq al p.gen)
|
2013-12-20 21:34:13 +04:00
|
|
|
:+ %brcb q.lyg
|
|
|
|
%- ~(run by q.gen)
|
|
|
|
|= a=foot ^- foot
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=($elm -.a) a
|
2013-12-20 21:34:13 +04:00
|
|
|
:- -.a
|
2013-12-21 02:26:23 +04:00
|
|
|
:+ %tsgl p.a
|
2013-12-20 21:34:13 +04:00
|
|
|
:+ %cnts ~
|
|
|
|
:~ [[[%& 6] ~] [%ktts p.lyg [~ 6]]]
|
|
|
|
==
|
2015-12-04 18:16:34 +03:00
|
|
|
{$brkt *} [%tsgr [%brcn (~(put by q.gen) %$ [%ash p.gen])] [%cnzy %$]]
|
|
|
|
{$brls *} [%ktbr [%brts p.gen q.gen]]
|
|
|
|
{$brhp *} [%tsgl [%cnzy %$] [%brdt p.gen]]
|
|
|
|
{$brts *} [%brcb p.gen (~(put by *(map term foot)) %$ [%ash q.gen])]
|
|
|
|
{$brwt *} [%ktwt %brdt p.gen]
|
|
|
|
::
|
|
|
|
{$cbbr *} ~(clam al boil)
|
|
|
|
{$cbcb *} ~(clam al boil)
|
|
|
|
{$cbcl *} ~(clam al boil)
|
|
|
|
{$cbcn *} ~(clam al boil)
|
|
|
|
{$cbls *} ~(clam al boil)
|
|
|
|
{$cbpm *} ~(clam al boil)
|
|
|
|
{$cbwt *} ~(clam al boil)
|
|
|
|
{$cbts *} ~(clam al boil)
|
|
|
|
{$cbzy *} ~(clam al boil)
|
|
|
|
{$cbzz *} ~(clam al boil)
|
|
|
|
::
|
|
|
|
{$clkt *} [p.gen q.gen r.gen s.gen]
|
|
|
|
{$clfs *} =+(zoy=[%dtzz %ta %$] [%clsg [zoy [%clsg [zoy p.gen] ~]] ~])
|
|
|
|
{$clls *} [p.gen q.gen r.gen]
|
|
|
|
{$clcb *} [q.gen p.gen]
|
|
|
|
{$clcn *} [[%clsg p.gen] [%bczp %null]]
|
|
|
|
{$clhp *} [p.gen q.gen]
|
|
|
|
{$clsg *}
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig
|
2013-12-09 01:23:03 +04:00
|
|
|
?~ p.gen
|
2014-01-05 07:56:33 +04:00
|
|
|
[%dtzz %n ~]
|
2014-03-26 04:48:22 +04:00
|
|
|
[i.p.gen $(p.gen t.p.gen)]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cltr *}
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ p.gen
|
|
|
|
[%zpzp ~]
|
2014-03-26 04:48:22 +04:00
|
|
|
?~ t.p.gen
|
|
|
|
i.p.gen
|
|
|
|
[i.p.gen $(p.gen t.p.gen)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cncb *} [%ktls [%cnzz p.gen] %cnts p.gen q.gen]
|
|
|
|
{$cncl *}
|
2015-03-18 02:41:10 +03:00
|
|
|
=+ rem=[%cnsg [%$ ~] p.gen q.gen]
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=({$zpcb ^ $cnzz @ $~} p.gen) rem
|
|
|
|
=> .(p.gen `{@ ^ @ p+@tas $~}`p.gen)
|
2015-03-07 04:15:51 +03:00
|
|
|
:+ %sgzp [[%dtzz %tas 'slam'] [%dtzz %tas p.p.gen]]
|
2015-03-18 02:41:10 +03:00
|
|
|
rem
|
2015-03-19 03:22:20 +03:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cndt *} [%cnhp q.gen [p.gen ~]]
|
|
|
|
{$cnkt *} [%cnhp p.gen q.gen r.gen s.gen ~]
|
|
|
|
{$cnls *} [%cnhp p.gen q.gen r.gen ~]
|
|
|
|
{$cnhp *}
|
2014-01-16 10:43:56 +04:00
|
|
|
?~(q.gen [%tsgr p.gen [%cnzy %$]] [%cncl p.gen [%cltr q.gen]])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cnsg *} [%cntr p.gen q.gen [[[[%& 6] ~] r.gen] ~]]
|
|
|
|
{$cntr *}
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsls
|
|
|
|
q.gen
|
|
|
|
:+ %cnts
|
|
|
|
(weld p.gen `wing`[[~ 2] ~])
|
2015-12-08 04:23:27 +03:00
|
|
|
(turn r.gen |=({p+wing q+twig} [p [%tsgr [~ 3] q]]))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cnzy *} [%cnts [p.gen ~] ~]
|
|
|
|
{$cnzz *} [%cnts p.gen ~]
|
|
|
|
{$hxgl *} [%cnhp [%cnzy %noah] [%zpgr [%cltr p.gen]] ~]
|
|
|
|
{$hxgr *} [%cnhp [%cnzy %cain] [%zpgr [%cltr p.gen]] ~]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$ktdt *} [%ktls [%cnhp p.gen q.gen ~] q.gen]
|
|
|
|
{$kthp *} [%ktls ~(bunt al p.gen) q.gen]
|
|
|
|
{$sgbr *}
|
2014-01-05 02:57:44 +04:00
|
|
|
:+ %sggr
|
|
|
|
:- %mean
|
|
|
|
=+ fek=~(feck ap p.gen)
|
2014-01-05 07:56:33 +04:00
|
|
|
?^ fek [%dtzz %tas u.fek]
|
2015-06-10 02:35:04 +03:00
|
|
|
[%brdt [%cnhp [%cnzy %cain] [%zpgr [%tsgr [~ 3] p.gen]] ~]]
|
2014-04-07 21:16:57 +04:00
|
|
|
q.gen
|
2014-01-05 02:57:44 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$sgcb *} [%sggr [%mean [%brdt p.gen]] q.gen]
|
|
|
|
{$sgcn *}
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %sggl
|
|
|
|
:- %fast
|
|
|
|
:- %clls
|
2014-01-05 07:56:33 +04:00
|
|
|
:+ [%dtzz %$ p.gen]
|
2013-09-29 00:21:18 +04:00
|
|
|
[%zpts q.gen]
|
|
|
|
:- %clsg
|
2013-12-15 11:07:57 +04:00
|
|
|
=+ nob=`(list twig)`~
|
|
|
|
|- ^- (list twig)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ r.gen
|
2013-09-29 00:21:18 +04:00
|
|
|
nob
|
2014-01-05 07:56:33 +04:00
|
|
|
[[[%dtzz %$ p.i.r.gen] [%zpts q.i.r.gen]] $(r.gen t.r.gen)]
|
2013-09-29 00:21:18 +04:00
|
|
|
s.gen
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$sgfs *} [%sgcn p.gen [~ 7] ~ q.gen]
|
|
|
|
{$sggl *} [%tsgl [%sggr p.gen [~ 1]] q.gen]
|
|
|
|
{$sgbc *} [%sggr [%live [%dtzz %$ p.gen]] q.gen]
|
|
|
|
{$sgls *} [%sggr [%memo %dtzz %$ p.gen] q.gen]
|
|
|
|
{$sgpm *}
|
2013-12-09 01:23:03 +04:00
|
|
|
:+ %sggr
|
2014-01-05 07:56:33 +04:00
|
|
|
[%slog [%dtzy %$ p.gen] [%cnhp [%cnzy %cain] [%zpgr q.gen] ~]]
|
2013-09-29 00:21:18 +04:00
|
|
|
r.gen
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$sgts *} [%sggr [%germ p.gen] q.gen]
|
|
|
|
{$sgwt *}
|
2015-01-15 02:18:03 +03:00
|
|
|
:+ %tsls [%wtdt q.gen [%bczp %null] [[%bczp %null] r.gen]]
|
|
|
|
:^ %wtsg [~ 2]~
|
2015-01-14 01:13:08 +03:00
|
|
|
[%tsgr [~ 3] s.gen]
|
2015-01-15 02:18:03 +03:00
|
|
|
[%sgpm p.gen [~ 5] [%tsgr [~ 3] s.gen]]
|
2015-12-04 18:16:34 +03:00
|
|
|
::
|
|
|
|
{$smcl *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?- q.gen
|
2015-12-08 05:04:19 +03:00
|
|
|
$~ [%zpzp ~]
|
2015-12-08 04:46:28 +03:00
|
|
|
{* $~} i.q.gen
|
2013-09-29 00:21:18 +04:00
|
|
|
^
|
|
|
|
:+ %tsls
|
2013-12-09 01:23:03 +04:00
|
|
|
p.gen
|
2013-12-15 11:07:57 +04:00
|
|
|
=+ yex=`(list twig)`q.gen
|
|
|
|
|- ^- twig
|
2013-12-09 01:23:03 +04:00
|
|
|
?- yex
|
2015-12-08 04:46:28 +03:00
|
|
|
{* $~} [%tsgr [~ 3] i.yex]
|
|
|
|
{* ^} [%cnhp [~ 2] [%tsgr [~ 3] i.yex] $(yex t.yex) ~]
|
2015-12-08 05:04:19 +03:00
|
|
|
$~ !!
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$smdq *} :: ;"
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsgr [%ktts %v ~ 1] :: => v=.
|
|
|
|
:- %brhp :: |-
|
2013-12-09 01:23:03 +04:00
|
|
|
:+ %ktls :: ^+
|
2013-09-29 00:21:18 +04:00
|
|
|
:- %brhp :: |-
|
2013-12-09 01:23:03 +04:00
|
|
|
:^ %wtcl :: ?:
|
2013-12-16 03:40:44 +04:00
|
|
|
[%bczp %bean] :: ?
|
|
|
|
[%bczp %null] :: ~
|
2014-10-31 20:56:33 +03:00
|
|
|
:- [%ktts %i [%dtzy 'tD' *@]] :: :- i=~~
|
2014-01-05 07:18:06 +04:00
|
|
|
[%ktts %t [%cnzy %$]] :: t=$
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig ::
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ p.gen ::
|
2013-12-16 03:40:44 +04:00
|
|
|
[%bczp %null] :: ~
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ res=$(p.gen t.p.gen) ::
|
2013-12-15 11:07:57 +04:00
|
|
|
^- twig ::
|
2013-09-29 00:21:18 +04:00
|
|
|
?@ i.p.gen ::
|
2014-01-05 07:56:33 +04:00
|
|
|
[[%dtzy 'tD' i.p.gen] res] :: [~~{i.p.gen} {res}]
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsls ::
|
|
|
|
:- :+ %ktts :: ^=
|
|
|
|
%a :: a
|
|
|
|
:+ %ktls :: ^+
|
2014-01-05 07:18:06 +04:00
|
|
|
[%cnzy %$] :: $
|
|
|
|
[%tsgr [%cnzy %v] p.i.p.gen] :: =>(v {p.i.p.gen})
|
2013-09-29 00:21:18 +04:00
|
|
|
[%ktts %b res] :: b={res}
|
2013-12-15 11:07:57 +04:00
|
|
|
^- twig ::
|
2013-09-29 00:21:18 +04:00
|
|
|
:- %brhp :: |-
|
|
|
|
:^ %wtpt :: ?@
|
2014-01-01 10:48:21 +04:00
|
|
|
[%a ~] :: a
|
2014-01-05 07:18:06 +04:00
|
|
|
[%cnzy %b] :: b
|
|
|
|
:- [%tsgl [~ 2] [%cnzy %a]] :: :- -.a
|
2013-12-15 13:48:16 +04:00
|
|
|
:+ %cnts :: %=
|
2013-09-29 00:21:18 +04:00
|
|
|
[%$ ~] :: $
|
2014-02-10 21:50:20 +04:00
|
|
|
[[[%a ~] [%tsgl [~ 3] [%cnzy %a]]] ~] :: a +.a
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$smdt *} :: ;.
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsgr [%ktts %v ~ 1] :: => v=.
|
2014-01-05 07:18:06 +04:00
|
|
|
:+ %tsls [%ktts %a [%tsgr [%cnzy %v] p.gen]] :: =+ a==>(v {p.gen})
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig ::
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ q.gen ::
|
2014-01-05 07:18:06 +04:00
|
|
|
[%cnzy %a] :: a
|
2014-01-01 10:48:21 +04:00
|
|
|
:^ %wtsg [%a ~] :: ?~ a
|
2013-12-16 03:40:44 +04:00
|
|
|
[%bczp %null] :: ~
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsgr :: =>
|
2013-12-15 13:48:16 +04:00
|
|
|
:+ %cnts [[~ 1] ~] :: %= .
|
2013-12-15 12:33:53 +04:00
|
|
|
:~ :- [%a ~] :: a
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsgr :: =>
|
2014-01-05 07:18:06 +04:00
|
|
|
[[%cnzy %v] [%tsgl [~ 3] [%cnzy %a]]] :: [v +.a]
|
2013-09-29 00:21:18 +04:00
|
|
|
i.q.gen ::
|
|
|
|
== :: ==
|
|
|
|
$(q.gen t.q.gen) ::
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$smsg *} :: ;~
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
?- q.gen
|
2015-12-08 05:04:19 +03:00
|
|
|
$~ ~|(%open-smsg !!)
|
2013-09-29 00:21:18 +04:00
|
|
|
^
|
|
|
|
:+ %tsgr [%ktts %v ~ 1] :: => v=.
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig ::
|
2015-12-08 05:04:19 +03:00
|
|
|
?: ?=($~ t.q.gen) ::
|
2014-01-05 07:18:06 +04:00
|
|
|
[%tsgr [%cnzy %v] i.q.gen] :: =>(v {i.q.gen})
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsls [%ktts %a $(q.gen t.q.gen)] :: =+ ^= a
|
|
|
|
:+ %tsls :: {$(q.gen t.q.gen)}
|
2014-01-05 07:18:06 +04:00
|
|
|
[%ktts %b [%tsgr [%cnzy %v] i.q.gen]] :: =+ ^= b
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsls :: =>(v {i.q.gen})
|
2014-01-05 07:18:06 +04:00
|
|
|
[%ktts %c [%tsgl [~ 6] [%cnzy %b]]] :: =+ c=+6.b
|
2013-09-29 00:21:18 +04:00
|
|
|
:- %brdt :: |.
|
2013-12-09 01:23:03 +04:00
|
|
|
:^ %cnls :: %+
|
2014-01-05 07:18:06 +04:00
|
|
|
[%tsgr [%cnzy %v] p.gen] :: =>(v {p.gen})
|
|
|
|
[%cnhp [%cnzy %b] [%cnzy %c] ~] :: (b c)
|
|
|
|
[%cnts [%a ~] [[[[%& 6] ~] [%cnzy %c]] ~]] :: a(+6 c)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$smsm *} :: ;;
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsgr [%ktts %v ~ 1] :: => v=.
|
2015-01-09 03:10:31 +03:00
|
|
|
:+ %tsls :+ %ktts %a :: =+ ^= a
|
2015-01-15 06:07:26 +03:00
|
|
|
[%tsgr [%cnzy %v] [%bccm p.gen]] :: =>(v ,{p.gen})
|
2014-01-05 07:18:06 +04:00
|
|
|
:+ %tsls [%ktts %b [%tsgr [%cnzy %v] q.gen]] :: =+ b==>(v {q.gen})
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsls :: =+ c=(a b)
|
2014-01-05 07:18:06 +04:00
|
|
|
[%ktts %c [%cnhp [%cnzy %a] [%cnzy %b] ~]] ::
|
|
|
|
[%wtgr [%dtts [%cnzy %c] [%cnzy %b]] [%cnzy %c]] :: ?>(=(c b) c)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$tsbr *}
|
2013-12-15 07:04:52 +04:00
|
|
|
[%tsls ~(bunt al p.gen) q.gen]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$tscl *}
|
2013-09-29 00:21:18 +04:00
|
|
|
[%tsgr [%cncb [[~ 1] ~] p.gen] q.gen]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$tsdt *}
|
2013-09-29 00:21:18 +04:00
|
|
|
[%tsgr [%cncb [[~ 1] ~] [[p.gen q.gen] ~]] r.gen]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$tskt *} :: =^
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ cog=rusk(gen p.gen) ::
|
2013-12-15 13:48:16 +04:00
|
|
|
=+ wuy=(weld rake(gen q.gen) `wing`[%v ~]) ::
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsgr [%ktts %v ~ 1] :: => v=.
|
2014-01-05 07:18:06 +04:00
|
|
|
:+ %tsls [%ktts %a %tsgr [%cnzy %v] r.gen] :: =+ a==>(v \r.gen)
|
|
|
|
:^ %tsdt wuy [%tsgl [~ 3] [%cnzy %a]] :: =. \wuy +.a
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %tsgr :- :+ %ktts cog :: => :- ^= \cog
|
2014-01-05 07:18:06 +04:00
|
|
|
[%tsgl [~ 2] [%cnzy %a]] :: -.a
|
|
|
|
[%cnzy %v] :: v
|
2013-09-29 00:21:18 +04:00
|
|
|
s.gen :: s.gen
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$tsgl *} [%tsgr q.gen p.gen]
|
|
|
|
{$tsls *} [%tsgr [p.gen [~ 1]] q.gen]
|
|
|
|
{$tshp *} [%tsls q.gen p.gen]
|
|
|
|
{$tssg *}
|
2013-12-15 11:07:57 +04:00
|
|
|
|- ^- twig
|
2014-07-16 22:54:53 +04:00
|
|
|
?~ p.gen [%$ 1]
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ t.p.gen i.p.gen
|
|
|
|
[%tsgr i.p.gen $(p.gen t.p.gen)]
|
2014-02-10 21:50:20 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtbr *}
|
2013-12-09 01:23:03 +04:00
|
|
|
|-
|
2014-06-07 05:09:44 +04:00
|
|
|
?~(p.gen [%dtzz %f 1] [%wtcl i.p.gen [%dtzz %f 0] $(p.gen t.p.gen)])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtdt *} [%wtcl p.gen r.gen q.gen]
|
|
|
|
{$wtgl *} [%wtcl p.gen [%zpzp ~] q.gen]
|
|
|
|
{$wtgr *} [%wtcl p.gen q.gen [%zpzp ~]]
|
|
|
|
{$wtkt *} [%wtcl [%wtts [%axil %atom %$] p.gen] r.gen q.gen]
|
|
|
|
{$wthp *}
|
2013-09-29 00:21:18 +04:00
|
|
|
|-
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ q.gen
|
2014-01-05 07:18:06 +04:00
|
|
|
[%zpfs [%cnzz p.gen]]
|
2013-09-29 00:21:18 +04:00
|
|
|
:^ %wtcl
|
|
|
|
[%wtts p.i.q.gen p.gen]
|
|
|
|
q.i.q.gen
|
|
|
|
$(q.gen t.q.gen)
|
2013-12-15 10:27:48 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtls *} [%wthp p.gen (weld r.gen `_r.gen`[[[%axil %noun] q.gen] ~])]
|
|
|
|
{$wtpm *}
|
2013-09-29 00:21:18 +04:00
|
|
|
|-
|
2014-06-07 05:09:44 +04:00
|
|
|
?~(p.gen [%dtzz %f 0] [%wtcl i.p.gen $(p.gen t.p.gen) [%dtzz %f 1]])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtpt *} [%wtcl [%wtts [%axil %atom %$] p.gen] q.gen r.gen]
|
|
|
|
{$wtsg *} [%wtcl [%wtts [%axil %null] p.gen] q.gen r.gen]
|
|
|
|
{$wtzp *} [%wtcl p.gen [%dtzz %f 1] [%dtzz %f 0]]
|
2014-01-04 06:59:56 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wthz *}
|
2014-01-04 06:59:56 +04:00
|
|
|
=+ vaw=~(. ah p.gen)
|
|
|
|
%- gray:vaw
|
2015-12-08 04:46:28 +03:00
|
|
|
[%wthp puce:vaw (turn q.gen |=({a+tile b+twig} [a (blue:vaw b)]))]
|
2014-01-04 06:59:56 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtlz *}
|
2014-01-04 06:59:56 +04:00
|
|
|
=+ vaw=~(. ah p.gen)
|
|
|
|
%- gray:vaw
|
|
|
|
^- twig
|
2014-04-07 21:16:57 +04:00
|
|
|
:+ %wtls puce:vaw
|
2015-12-08 04:46:28 +03:00
|
|
|
[(blue:vaw q.gen) (turn r.gen |=({a+tile b+twig} [a (blue:vaw b)]))]
|
2014-01-04 06:59:56 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtsz *}
|
2014-01-04 06:59:56 +04:00
|
|
|
=+ vaw=~(. ah p.gen)
|
|
|
|
%- gray:vaw
|
|
|
|
[%wtsg puce:vaw (blue:vaw q.gen) (blue:vaw r.gen)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtkz *}
|
2014-01-04 06:59:56 +04:00
|
|
|
=+ vaw=~(. ah p.gen)
|
|
|
|
%- gray:vaw
|
|
|
|
[%wtkt puce:vaw (blue:vaw q.gen) (blue:vaw r.gen)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtpz *}
|
2014-01-04 06:59:56 +04:00
|
|
|
=+ vaw=~(. ah p.gen)
|
|
|
|
%- gray:vaw
|
|
|
|
[%wtpt puce:vaw (blue:vaw q.gen) (blue:vaw r.gen)]
|
2014-10-31 06:13:40 +03:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wttz *}
|
2014-10-31 06:13:40 +03:00
|
|
|
=+ vaw=~(. ah q.gen)
|
|
|
|
%- gray:vaw
|
|
|
|
[%wtts (pink:vaw p.gen) puce:vaw]
|
2014-01-04 06:59:56 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$zpcb *} q.gen
|
|
|
|
{$zpgr *}
|
2014-01-05 07:18:06 +04:00
|
|
|
[%cnhp [%cnzy %onan] [%zpsm [%bctr [%herb [%cnzy %abel]]] p.gen] ~]
|
2014-01-05 06:05:33 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$zpwt *}
|
2014-01-05 05:15:52 +04:00
|
|
|
?: ?: ?=(@ p.gen)
|
2014-07-19 04:51:22 +04:00
|
|
|
(lte hoon p.gen)
|
|
|
|
&((lte hoon p.p.gen) (gte hoon q.p.gen))
|
2014-04-07 21:16:57 +04:00
|
|
|
q.gen
|
2014-07-19 04:51:22 +04:00
|
|
|
~|([%hoon-fail hoon p.gen] !!)
|
2014-01-05 05:15:52 +04:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
* gen
|
|
|
|
==
|
|
|
|
::
|
2015-11-15 23:41:41 +03:00
|
|
|
++ rake ~|(%rake-twig (need reek))
|
|
|
|
++ reek
|
|
|
|
^- (unit wing)
|
|
|
|
?+ gen ~
|
2015-12-04 18:16:34 +03:00
|
|
|
{$~ *} `[gen ~]
|
|
|
|
{$cnzy *} `[p.gen ~]
|
|
|
|
{$cnzz *} `p.gen
|
|
|
|
{$cnts * $~} `p.gen
|
|
|
|
{$zpcb *} reek(gen q.gen)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
++ rusk
|
|
|
|
^- term
|
|
|
|
=+ wig=rake
|
2015-12-04 18:16:34 +03:00
|
|
|
?. ?=({@ $~} wig)
|
2013-12-15 11:07:57 +04:00
|
|
|
~|(%rusk-twig !!)
|
2013-09-29 00:21:18 +04:00
|
|
|
i.wig
|
|
|
|
--
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2fC, compilation proper ::
|
|
|
|
::
|
|
|
|
++ ut
|
|
|
|
~% %ut
|
|
|
|
+>+
|
|
|
|
==
|
|
|
|
%fan fan
|
|
|
|
%rib rib
|
|
|
|
%vet vet
|
|
|
|
%fab fab
|
|
|
|
%burn burn
|
2014-01-04 06:59:56 +04:00
|
|
|
%busk busk
|
2013-09-29 00:21:18 +04:00
|
|
|
%crop crop
|
2013-12-05 02:30:09 +04:00
|
|
|
%duck duck
|
|
|
|
%dune dune
|
2013-09-29 00:21:18 +04:00
|
|
|
%dunk dunk
|
|
|
|
%fink fink
|
|
|
|
%fire fire
|
|
|
|
%firm firm
|
|
|
|
%fish fish
|
|
|
|
%fuse fuse
|
|
|
|
%gain gain
|
|
|
|
%heal heal
|
|
|
|
%lose lose
|
|
|
|
%mint mint
|
|
|
|
%moot moot
|
|
|
|
%mull mull
|
|
|
|
%nest nest
|
|
|
|
%play play
|
|
|
|
%park park
|
|
|
|
%peek peek
|
|
|
|
%repo repo
|
|
|
|
%rest rest
|
2014-01-05 06:05:33 +04:00
|
|
|
%sift sift
|
2013-09-29 00:21:18 +04:00
|
|
|
%seek seek
|
|
|
|
%tack tack
|
|
|
|
%tock tock
|
|
|
|
%wrap wrap
|
|
|
|
==
|
2015-12-04 18:16:34 +03:00
|
|
|
=+ :* fan=*(set {type twig})
|
|
|
|
rib=*(set {type type twig})
|
2013-09-29 00:21:18 +04:00
|
|
|
vet=`?`&
|
|
|
|
fab=`?`&
|
|
|
|
==
|
|
|
|
=+ sut=`type`%noun
|
|
|
|
|%
|
|
|
|
++ burn
|
|
|
|
=+ gil=*(set type)
|
|
|
|
|- ^- *
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *} 0
|
|
|
|
{$bull *} $(sut repo)
|
|
|
|
{$cell *} [$(sut p.sut) $(sut q.sut)]
|
|
|
|
{$core *} [p.r.q.sut $(sut p.sut)]
|
|
|
|
{$cube *} p.sut
|
|
|
|
{$face *} $(sut repo)
|
|
|
|
{$fork *} $(sut p.sut)
|
|
|
|
{$hold *} ?: (~(has in gil) sut)
|
2014-01-05 02:57:44 +04:00
|
|
|
~_ (dunk %type)
|
2014-07-17 06:10:13 +04:00
|
|
|
~|(%burn-loop !!)
|
2013-09-29 00:21:18 +04:00
|
|
|
$(sut repo, gil (~(put in gil) sut))
|
2015-12-04 18:16:34 +03:00
|
|
|
$noun 0
|
|
|
|
$void ~|(%burn-void !!)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2014-01-04 06:59:56 +04:00
|
|
|
++ busk
|
|
|
|
~/ %busk
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {cog+term hyp+wing}
|
2014-01-04 06:59:56 +04:00
|
|
|
^- type
|
|
|
|
(bull [cog hyp (seep %both hyp)] sut)
|
|
|
|
::
|
2013-12-21 05:02:26 +04:00
|
|
|
++ conk
|
2015-12-04 18:16:34 +03:00
|
|
|
|= got+toga
|
2013-12-21 02:26:23 +04:00
|
|
|
^- type
|
|
|
|
?@ got [%face got sut]
|
|
|
|
?- -.got
|
2015-12-08 04:23:27 +03:00
|
|
|
$0 sut
|
|
|
|
$1 [%face p.got $(got q.got)]
|
|
|
|
$2 ?> |(!vet (nest(sut [%cell %noun %noun]) & sut))
|
2015-12-04 18:16:34 +03:00
|
|
|
:+ %cell
|
|
|
|
$(got p.got, sut (peek %both 2))
|
|
|
|
$(got q.got, sut (peek %both 3))
|
2013-12-21 02:26:23 +04:00
|
|
|
==
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ crop
|
|
|
|
~/ %crop
|
2015-12-04 18:16:34 +03:00
|
|
|
|= ref+type
|
|
|
|
=+ bix=*(set {type type})
|
2013-09-29 00:21:18 +04:00
|
|
|
=< dext
|
|
|
|
|%
|
|
|
|
++ dext
|
|
|
|
^- type
|
|
|
|
~| %crop-dext
|
2014-01-05 02:57:44 +04:00
|
|
|
:: ~_ (dunk 'dext: sut')
|
|
|
|
:: ~_ (dunk(sut ref) 'dext: ref')
|
2013-09-29 00:21:18 +04:00
|
|
|
?: |(=(sut ref) =(%noun ref))
|
|
|
|
%void
|
|
|
|
?: =(%void ref)
|
|
|
|
sut
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?- ref
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *} %void
|
|
|
|
{$cell *} sut
|
2013-09-29 00:21:18 +04:00
|
|
|
* sint
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bull *} (bull p.sut dext(sut q.sut))
|
|
|
|
{$cell *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?- ref
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *} sut
|
|
|
|
{$cell *} ?: (nest(sut p.ref) | p.sut)
|
2013-09-29 00:21:18 +04:00
|
|
|
(cell p.sut dext(sut q.sut, ref q.ref))
|
|
|
|
sut
|
|
|
|
* sint
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *}
|
|
|
|
?: ?=(?({$atom *} {$cell *}) ref)
|
2013-09-29 00:21:18 +04:00
|
|
|
sut
|
|
|
|
sint
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cube *}
|
|
|
|
?: &(?=({$cube *} ref) =(p.sut p.ref))
|
2013-09-29 00:21:18 +04:00
|
|
|
%void
|
2015-12-04 18:16:34 +03:00
|
|
|
?: ?=(?({$atom *} {$cell *}) ref)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ foz=dext(sut q.sut)
|
|
|
|
?: (firm(sut foz) p.sut)
|
|
|
|
(cube p.sut foz)
|
|
|
|
%void
|
|
|
|
sint
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$face *} (face p.sut dext(sut q.sut))
|
|
|
|
{$fork *} (fork dext(sut p.sut) dext(sut q.sut))
|
|
|
|
{$hold *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: (~(has in bix) [sut ref])
|
|
|
|
~|(%crop-loop !!)
|
2015-12-05 02:59:29 +03:00
|
|
|
(reco |=(a+type dext(sut a, bix (~(put in bix) [sut ref]))))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-05 02:59:29 +03:00
|
|
|
$noun (reco |=(a+type dext(sut a)))
|
2015-12-04 18:16:34 +03:00
|
|
|
$void %void
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ sint
|
|
|
|
^- type
|
|
|
|
?- ref
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *} sut
|
|
|
|
{$cube *} sut
|
|
|
|
{$face *} dext(ref repo(sut ref))
|
|
|
|
{$fork *} dext(sut dext(ref p.ref), ref q.ref)
|
|
|
|
{$hold *} dext(ref repo(sut ref))
|
2013-09-29 00:21:18 +04:00
|
|
|
* !!
|
|
|
|
==
|
|
|
|
--
|
|
|
|
::
|
2013-12-31 23:30:37 +04:00
|
|
|
++ cool
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {pol+? hyp+wing ref+type}
|
2013-12-31 23:30:37 +04:00
|
|
|
^- type
|
|
|
|
=+ peh=`wing`(flop hyp)
|
|
|
|
|- ^- type
|
|
|
|
?~ peh
|
|
|
|
?:(pol (fuse ref) (crop ref))
|
|
|
|
=> .(i.peh ?^(i.peh i.peh [%| p=0 q=i.peh]))
|
|
|
|
=+ ^= poz ^- post
|
|
|
|
?- -.i.peh
|
2015-12-04 18:16:34 +03:00
|
|
|
{$&} [p.i.peh %& (peek %both p.i.peh)]
|
|
|
|
{$|} (finq p.i.peh %both q.i.peh)
|
2013-12-31 23:30:37 +04:00
|
|
|
==
|
|
|
|
|- ^- type
|
|
|
|
?: =(1 p.poz)
|
|
|
|
?- -.q.poz
|
2015-12-08 04:23:27 +03:00
|
|
|
$0 ?- -.i.peh
|
2015-12-04 18:16:34 +03:00
|
|
|
{$&} ^$(peh t.peh)
|
|
|
|
{$|} (face q.i.peh ^$(peh t.peh, sut p.q.poz))
|
|
|
|
==
|
2015-12-08 04:23:27 +03:00
|
|
|
$1 ^$(peh t.peh)
|
|
|
|
$2 %+ bull
|
2015-12-04 18:16:34 +03:00
|
|
|
[p.p.q.poz q.p.q.poz r.p.q.poz ^$(peh t.peh, sut s.p.q.poz)]
|
|
|
|
q.q.poz
|
2013-12-31 23:30:37 +04:00
|
|
|
==
|
|
|
|
=+ [now=(cap p.poz) lat=(mas p.poz)]
|
|
|
|
=+ vil=*(set type)
|
|
|
|
|- ^- type
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *} %void
|
|
|
|
{$bull *} (reco |=(p=type (bull p.sut ^$(sut p))))
|
|
|
|
{$cell *}
|
2013-12-31 23:30:37 +04:00
|
|
|
?: =(2 now)
|
|
|
|
(cell ^$(p.poz lat, sut p.sut) q.sut)
|
|
|
|
(cell p.sut ^$(p.poz lat, sut q.sut))
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *} ?.(=(3 now) sut (core ^$(p.poz lat, sut p.sut) q.sut))
|
|
|
|
{$cube *} (reco |=(p=type ^$(sut p)))
|
|
|
|
{$face *} (reco |=(p=type (face p.sut ^$(sut p))))
|
|
|
|
{$fork *}
|
2013-12-31 23:30:37 +04:00
|
|
|
?: (~(has in vil) sut)
|
|
|
|
%void
|
|
|
|
=> .(vil (~(put in vil) sut))
|
|
|
|
(fork $(sut p.sut) $(sut q.sut))
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$hold *} (reco |=(p=type ^$(sut p)))
|
|
|
|
$noun (reco |=(p=type ^$(sut p)))
|
|
|
|
$void %void
|
2013-12-31 23:30:37 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-01-10 00:02:47 +03:00
|
|
|
++ dash
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {mil+tape lim+char} ^- tape
|
2015-01-10 00:02:47 +03:00
|
|
|
:- lim
|
|
|
|
|- ^- tape
|
|
|
|
?~ mil [lim ~]
|
|
|
|
?: =(lim i.mil) ['\\' i.mil $(mil t.mil)]
|
|
|
|
?: =('\\' i.mil) ['\\' i.mil $(mil t.mil)]
|
|
|
|
?: (lte ' ' i.mil) [i.mil $(mil t.mil)]
|
|
|
|
['\\' ~(x ne (rsh 2 1 i.mil)) ~(x ne (end 2 1 i.mil)) $(mil t.mil)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
++ deal |=(lum+* (dish dole lum))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ dial
|
2015-12-04 18:16:34 +03:00
|
|
|
|= ham+calf
|
|
|
|
=+ gid=*(set @ud)
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- tank
|
|
|
|
?- q.ham
|
2015-12-04 18:16:34 +03:00
|
|
|
$noun [%leaf '*' ~]
|
|
|
|
$path [%leaf '/' ~]
|
|
|
|
$type [%leaf '#' 't' ~]
|
|
|
|
$void [%leaf '#' ~]
|
|
|
|
$wool [%leaf '*' '"' '"' ~]
|
|
|
|
$wall [%leaf '*' '\'' '\'' ~]
|
|
|
|
$yarn [%leaf '"' '"' ~]
|
|
|
|
{$atom *} [%leaf '@' (trip p.q.ham)]
|
|
|
|
{$core *}
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %rose
|
|
|
|
[[' ' ~] ['<' ~] ['>' ~]]
|
|
|
|
|- ^- (list tank)
|
2013-12-09 01:23:03 +04:00
|
|
|
?~ p.q.ham
|
2013-09-29 00:21:18 +04:00
|
|
|
[^$(q.ham q.q.ham) ~]
|
|
|
|
[[%leaf (rip 3 i.p.q.ham)] $(p.q.ham t.p.q.ham)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$face *}
|
2013-09-29 00:21:18 +04:00
|
|
|
[%palm [['=' ~] ~ ~ ~] [%leaf (trip p.q.ham)] $(q.ham q.q.ham) ~]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$list *}
|
2013-12-21 06:35:33 +04:00
|
|
|
[%rose [" " (weld (trip p.q.ham) "(") ")"] $(q.ham q.q.ham) ~]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$pick *}
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %rose
|
|
|
|
[[' ' ~] ['{' ~] ['}' ~]]
|
|
|
|
|- ^- (list tank)
|
|
|
|
?~(p.q.ham ~ [^$(q.ham i.p.q.ham) $(p.q.ham t.p.q.ham)])
|
2013-12-09 01:23:03 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$plot *}
|
2013-09-29 00:21:18 +04:00
|
|
|
:+ %rose
|
|
|
|
[[' ' ~] ['[' ~] [']' ~]]
|
|
|
|
|- ^- (list tank)
|
|
|
|
?~(p.q.ham ~ [^$(q.ham i.p.q.ham) $(p.q.ham t.p.q.ham)])
|
2013-12-09 01:23:03 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$pear *}
|
2013-09-29 00:21:18 +04:00
|
|
|
[%leaf '%' ~(rend co [~ p.q.ham q.q.ham])]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$stop *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: (~(has in gid) p.q.ham)
|
|
|
|
[%leaf '$' ~(rend co [~ %ud p.q.ham])]
|
|
|
|
:+ %palm
|
2013-12-09 01:23:03 +04:00
|
|
|
[['.' ~] ['^' '$' ~(rend co [~ %ud p.q.ham])] ~ ~]
|
2013-09-29 00:21:18 +04:00
|
|
|
[$(gid (~(put in gid) p.q.ham), q.ham (need (~(get by p.ham) p.q.ham))) ~]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$tree *}
|
2013-12-21 06:35:33 +04:00
|
|
|
[%rose [" " (weld (trip p.q.ham) "(") ")"] $(q.ham q.q.ham) ~]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$unit *}
|
2013-12-21 06:35:33 +04:00
|
|
|
[%rose [" " (weld (trip p.q.ham) "(") ")"] $(q.ham q.q.ham) ~]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ dish
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {ham+calf lum+*} ^- tank
|
2013-09-29 00:21:18 +04:00
|
|
|
~| [%dish-h ?@(q.ham q.ham -.q.ham)]
|
2014-03-08 04:31:36 +04:00
|
|
|
~| [%lump lum]
|
|
|
|
~| [%ham ham]
|
2013-09-29 00:21:18 +04:00
|
|
|
%- need
|
2015-12-04 18:16:34 +03:00
|
|
|
=| gil=(set {@ud *})
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- (unit tank)
|
|
|
|
?- q.ham
|
2015-12-04 18:16:34 +03:00
|
|
|
$noun
|
2013-09-29 00:21:18 +04:00
|
|
|
%= $
|
|
|
|
q.ham
|
|
|
|
?: ?=(@ lum)
|
|
|
|
[%atom %$]
|
|
|
|
:- %plot
|
|
|
|
|- ^- (list wine)
|
|
|
|
[%noun ?:(?=(@ +.lum) [[%atom %$] ~] $(lum +.lum))]
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$path
|
2013-09-29 00:21:18 +04:00
|
|
|
:- ~
|
|
|
|
:+ %rose
|
|
|
|
[['/' ~] ['/' ~] ~]
|
|
|
|
|- ^- (list tank)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ lum ~
|
|
|
|
?@ lum !!
|
2013-12-09 01:23:03 +04:00
|
|
|
?> ?=(@ -.lum)
|
2013-09-29 00:21:18 +04:00
|
|
|
[[%leaf (rip 3 -.lum)] $(lum +.lum)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$type
|
2015-02-08 10:40:09 +03:00
|
|
|
=+ cis=((hard tank) .*(.(sut lum) !=(duck))) :: type bypass
|
2015-01-17 05:07:05 +03:00
|
|
|
:^ ~ %palm
|
2015-06-12 20:56:30 +03:00
|
|
|
[~ ~ ~ ~]
|
2015-01-27 02:24:31 +03:00
|
|
|
[[%leaf '#' 't' '/' ~] cis ~]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$wall
|
2013-09-29 00:21:18 +04:00
|
|
|
:- ~
|
|
|
|
:+ %rose
|
|
|
|
[[' ' ~] ['<' '|' ~] ['|' '>' ~]]
|
|
|
|
|- ^- (list tank)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ lum ~
|
|
|
|
?@ lum !!
|
2015-12-04 18:16:34 +03:00
|
|
|
[[%leaf (trip ((hard @) -.lum))] $(lum +.lum)]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$wool
|
2013-09-29 00:21:18 +04:00
|
|
|
:- ~
|
|
|
|
:+ %rose
|
|
|
|
[[' ' ~] ['<' '<' ~] ['>' '>' ~]]
|
|
|
|
|- ^- (list tank)
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ lum ~
|
|
|
|
?@ lum !!
|
2013-09-29 00:21:18 +04:00
|
|
|
[(need ^$(q.ham %yarn, lum -.lum)) $(lum +.lum)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$yarn
|
2015-01-10 00:02:47 +03:00
|
|
|
[~ %leaf (dash (tape lum) '"')]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$void
|
2013-09-29 00:21:18 +04:00
|
|
|
~
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?. ?=(@ lum)
|
|
|
|
~
|
|
|
|
:+ ~
|
2014-04-07 21:16:57 +04:00
|
|
|
%leaf
|
2015-02-27 05:20:07 +03:00
|
|
|
?+ (rash p.q.ham ;~(sfix (cook crip (star low)) (star hig)))
|
|
|
|
~(rend co [~ p.q.ham lum])
|
2015-12-08 04:23:27 +03:00
|
|
|
$$ ~(rend co [~ %ud lum])
|
|
|
|
$t (dash (rip 3 lum) '\'')
|
|
|
|
$tas ['%' ?.(=(0 lum) (rip 3 lum) ['$' ~])]
|
2015-01-10 00:02:47 +03:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *}
|
2013-09-29 00:21:18 +04:00
|
|
|
:: XX needs rethinking for core metal
|
|
|
|
:: ?. ?=(^ lum) ~
|
|
|
|
:: => .(lum `*`lum)
|
|
|
|
:: =- ?~(tok ~ [~ %rose [[' ' ~] ['<' ~] ['>' ~]] u.tok])
|
|
|
|
:: ^= tok
|
|
|
|
:: |- ^- (unit (list tank))
|
2013-12-09 01:23:03 +04:00
|
|
|
:: ?~ p.q.ham
|
2013-09-29 00:21:18 +04:00
|
|
|
:: =+ den=^$(q.ham q.q.ham)
|
|
|
|
:: ?~(den ~ [~ u.den ~])
|
|
|
|
:: =+ mur=$(p.q.ham t.p.q.ham, lum +.lum)
|
|
|
|
:: ?~(mur ~ [~ [[%leaf (rip 3 i.p.q.ham)] u.mur]])
|
|
|
|
[~ (dial ham)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$face *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ wal=$(q.ham q.q.ham)
|
|
|
|
?~ wal
|
|
|
|
~
|
|
|
|
[~ %palm [['=' ~] ~ ~ ~] [%leaf (trip p.q.ham)] u.wal ~]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$list *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(~ lum)
|
|
|
|
[~ %leaf '~' ~]
|
2013-12-09 01:23:03 +04:00
|
|
|
=- ?~ tok
|
|
|
|
~
|
2013-09-29 00:21:18 +04:00
|
|
|
[~ %rose [[' ' ~] ['~' '[' ~] [']' ~]] u.tok]
|
|
|
|
^= tok
|
|
|
|
|- ^- (unit (list tank))
|
|
|
|
?: ?=(@ lum)
|
|
|
|
?.(=(~ lum) ~ [~ ~])
|
|
|
|
=+ [for=^$(q.ham q.q.ham, lum -.lum) aft=$(lum +.lum)]
|
|
|
|
?. &(?=(^ for) ?=(^ aft))
|
|
|
|
~
|
|
|
|
[~ u.for u.aft]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$pick *}
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- (unit tank)
|
|
|
|
?~ p.q.ham
|
|
|
|
~
|
|
|
|
=+ wal=^$(q.ham i.p.q.ham)
|
|
|
|
?~ wal
|
|
|
|
$(p.q.ham t.p.q.ham)
|
|
|
|
wal
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$plot *}
|
2013-12-09 01:23:03 +04:00
|
|
|
=- ?~ tok
|
|
|
|
~
|
2013-09-29 00:21:18 +04:00
|
|
|
[~ %rose [[' ' ~] ['[' ~] [']' ~]] u.tok]
|
|
|
|
^= tok
|
|
|
|
|- ^- (unit (list tank))
|
|
|
|
?~ p.q.ham
|
|
|
|
~
|
2015-12-08 04:46:28 +03:00
|
|
|
?: ?=({* $~} p.q.ham)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ wal=^$(q.ham i.p.q.ham)
|
|
|
|
?~(wal ~ [~ [u.wal ~]])
|
|
|
|
?@ lum
|
|
|
|
~
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ gim=^$(q.ham i.p.q.ham, lum -.lum)
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ gim
|
|
|
|
~
|
|
|
|
=+ myd=$(p.q.ham t.p.q.ham, lum +.lum)
|
|
|
|
?~ myd
|
|
|
|
~
|
|
|
|
[~ u.gim u.myd]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$pear *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?. =(lum q.q.ham)
|
|
|
|
~
|
2015-07-28 01:39:36 +03:00
|
|
|
=. p.q.ham
|
|
|
|
(rash p.q.ham ;~(sfix (cook crip (star low)) (star hig)))
|
|
|
|
=+ fox=$(q.ham [%atom p.q.ham])
|
2015-12-08 04:23:27 +03:00
|
|
|
?> ?=({$~ $leaf ^} fox)
|
|
|
|
?: ?=(?($n $tas) p.q.ham)
|
2015-07-28 01:39:36 +03:00
|
|
|
fox
|
|
|
|
[~ %leaf '%' p.u.fox]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$stop *}
|
2014-03-05 23:00:27 +04:00
|
|
|
?: (~(has in gil) [p.q.ham lum]) ~
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ kep=(~(get by p.ham) p.q.ham)
|
|
|
|
?~ kep
|
|
|
|
~|([%stop-loss p.q.ham] !!)
|
2014-03-05 23:00:27 +04:00
|
|
|
$(gil (~(put in gil) [p.q.ham lum]), q.ham u.kep)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$tree *}
|
2013-12-09 01:23:03 +04:00
|
|
|
=- ?~ tok
|
|
|
|
~
|
2013-09-29 00:21:18 +04:00
|
|
|
[~ %rose [[' ' ~] ['{' ~] ['}' ~]] u.tok]
|
|
|
|
^= tok
|
|
|
|
=+ tuk=*(list tank)
|
|
|
|
|- ^- (unit (list tank))
|
|
|
|
?: =(~ lum)
|
|
|
|
[~ tuk]
|
2015-12-08 04:46:28 +03:00
|
|
|
?. ?=({n+* l+* r+*} lum)
|
2013-09-29 00:21:18 +04:00
|
|
|
~
|
|
|
|
=+ rol=$(lum r.lum)
|
|
|
|
?~ rol
|
|
|
|
~
|
|
|
|
=+ tim=^$(q.ham q.q.ham, lum n.lum)
|
|
|
|
?~ tim
|
|
|
|
~
|
|
|
|
$(lum l.lum, tuk [u.tim u.rol])
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$unit *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?@ lum
|
|
|
|
?.(=(~ lum) ~ [~ %leaf '~' ~])
|
|
|
|
?. =(~ -.lum)
|
|
|
|
~
|
|
|
|
=+ wal=$(q.ham q.q.ham, lum +.lum)
|
|
|
|
?~ wal
|
|
|
|
~
|
|
|
|
[~ %rose [[' ' ~] ['[' ~] [']' ~]] [%leaf '~' ~] u.wal ~]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ doge
|
2015-12-04 18:16:34 +03:00
|
|
|
|= ham+calf
|
2013-09-29 00:21:18 +04:00
|
|
|
=- ?+ woz woz
|
2015-12-04 18:16:34 +03:00
|
|
|
{$list * {$atom $'ta'}} %path
|
|
|
|
{$list * {$atom $'t'}} %wall
|
|
|
|
{$list * {$atom $'tD'}} %yarn
|
|
|
|
{$list * $yarn} %wool
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
^= woz
|
|
|
|
^- wine
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=({$stop *} q.ham)
|
2015-12-04 18:16:34 +03:00
|
|
|
?: ?& ?= {$pick {$pear $n $0} {$plot {$pear $n $0} {$face *} $~} $~}
|
2013-09-29 00:21:18 +04:00
|
|
|
q.ham
|
|
|
|
=(1 (met 3 p.i.t.p.i.t.p.q.ham))
|
|
|
|
==
|
|
|
|
[%unit =<([p q] i.t.p.i.t.p.q.ham)]
|
|
|
|
q.ham
|
|
|
|
=+ may=(~(get by p.ham) p.q.ham)
|
|
|
|
?~ may
|
|
|
|
q.ham
|
2015-12-04 18:16:34 +03:00
|
|
|
?. ?& ?=({$pick *} u.may)
|
2013-09-29 00:21:18 +04:00
|
|
|
?=(^ p.u.may)
|
|
|
|
=([%pear %n 0] i.p.u.may)
|
|
|
|
==
|
|
|
|
q.ham
|
2015-12-04 18:16:34 +03:00
|
|
|
?: ?& ?=({{$plot {$face *} {$face * $stop *} $~} $~} t.p.u.may)
|
2013-09-29 00:21:18 +04:00
|
|
|
=(p.q.ham p.q.i.t.p.i.t.p.u.may)
|
|
|
|
=(1 (met 3 p.i.p.i.t.p.u.may))
|
|
|
|
=(1 (met 3 p.i.t.p.i.t.p.u.may))
|
|
|
|
==
|
|
|
|
:+ %list
|
|
|
|
(cat 3 p.i.p.i.t.p.u.may p.i.t.p.i.t.p.u.may)
|
|
|
|
q.i.p.i.t.p.u.may
|
2015-12-08 05:04:19 +03:00
|
|
|
?: ?& ?= $^
|
|
|
|
_: _: $plot
|
2015-12-04 18:16:34 +03:00
|
|
|
{$face *}
|
|
|
|
{$face * $stop *}
|
|
|
|
{{$face * $stop *} $~}
|
2013-12-15 10:27:48 +04:00
|
|
|
==
|
2015-12-08 05:04:19 +03:00
|
|
|
$~
|
2013-12-15 10:27:48 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
t.p.u.may
|
|
|
|
=(p.q.ham p.q.i.t.p.i.t.p.u.may)
|
|
|
|
=(p.q.ham p.q.i.t.t.p.i.t.p.u.may)
|
|
|
|
=(1 (met 3 p.i.p.i.t.p.u.may))
|
|
|
|
=(1 (met 3 p.i.t.p.i.t.p.u.may))
|
|
|
|
=(1 (met 3 p.i.t.t.p.i.t.p.u.may))
|
|
|
|
==
|
|
|
|
:+ %tree
|
|
|
|
%^ cat
|
|
|
|
3
|
2013-12-09 01:23:03 +04:00
|
|
|
p.i.p.i.t.p.u.may
|
2013-09-29 00:21:18 +04:00
|
|
|
(cat 3 p.i.t.p.i.t.p.u.may p.i.t.t.p.i.t.p.u.may)
|
|
|
|
q.i.p.i.t.p.u.may
|
|
|
|
q.ham
|
|
|
|
::
|
|
|
|
++ dole
|
|
|
|
^- calf
|
|
|
|
=+ gil=*(set type)
|
2015-12-04 18:16:34 +03:00
|
|
|
=+ dex=[p=*(map type @) q=*(map @ wine)]
|
2013-09-29 00:21:18 +04:00
|
|
|
=< [q.p q]
|
2015-12-08 04:46:28 +03:00
|
|
|
|- ^- {p+{p+(map type @) q+(map @ wine)} q+wine}
|
2013-09-29 00:21:18 +04:00
|
|
|
=- [p.tez (doge q.p.tez q.tez)]
|
|
|
|
^= tez
|
2015-12-08 04:46:28 +03:00
|
|
|
^- {p+{p+(map type @) q+(map @ wine)} q+wine}
|
2013-09-29 00:21:18 +04:00
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
$noun [dex sut]
|
|
|
|
$void [dex sut]
|
|
|
|
{$atom *} [dex sut]
|
|
|
|
{$bull *} $(sut q.sut) :: something better here
|
|
|
|
{$cell *}
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ hin=$(sut p.sut)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ yon=$(dex p.hin, sut q.sut)
|
|
|
|
:- p.yon
|
|
|
|
:- %plot
|
2015-12-04 18:16:34 +03:00
|
|
|
?:(?=({$plot *} q.yon) [q.hin p.q.yon] [q.hin q.yon ~])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ yad=$(sut p.sut)
|
|
|
|
:- p.yad
|
2015-12-08 04:46:28 +03:00
|
|
|
=+ ^= doy ^- {p+(list @ta) q+wine}
|
2015-12-04 18:16:34 +03:00
|
|
|
?: ?=({$core *} q.yad)
|
2013-09-29 00:21:18 +04:00
|
|
|
[p.q.yad q.q.yad]
|
|
|
|
[~ q.yad]
|
|
|
|
:- %core
|
|
|
|
:_ q.doy
|
|
|
|
:_ p.doy
|
|
|
|
%^ cat 3
|
|
|
|
%~ rent co
|
|
|
|
:+ ~ %ud
|
|
|
|
|- ^- @
|
|
|
|
?- q.r.q.sut
|
2015-12-08 04:46:28 +03:00
|
|
|
$~ 0
|
|
|
|
{* $~ $~} 1
|
|
|
|
{* $~ *} +($(q.r.q.sut r.q.r.q.sut))
|
|
|
|
{* * $~} +($(q.r.q.sut l.q.r.q.sut))
|
|
|
|
{* * *} .+ %+ add
|
|
|
|
$(q.r.q.sut l.q.r.q.sut)
|
|
|
|
$(q.r.q.sut r.q.r.q.sut)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
%^ cat 3
|
2015-12-04 18:16:34 +03:00
|
|
|
?-(p.q.sut $gold '.', $iron '|', $lead '?', $zinc '&')
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ gum=(mug q.r.q.sut)
|
|
|
|
%+ can 3
|
|
|
|
:~ [1 (add 'a' (mod gum 26))]
|
|
|
|
[1 (add 'a' (mod (div gum 26) 26))]
|
|
|
|
[1 (add 'a' (mod (div gum 676) 26))]
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cube *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?. ?=(@ p.sut)
|
|
|
|
$(sut repo)
|
|
|
|
=+ pum=$(sut q.sut)
|
2015-12-08 04:23:27 +03:00
|
|
|
?> ?=({$atom *} q.pum)
|
2013-09-29 00:21:18 +04:00
|
|
|
[p.pum [%pear p.q.pum p.sut]]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$face *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ yad=$(sut q.sut)
|
|
|
|
[p.yad [%face p.sut q.yad]]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$fork *}
|
2015-01-17 05:07:05 +03:00
|
|
|
?: =(p.sut fork/[cube/[%noun atom/%tas]]^[cube/[%void atom/%tas]])
|
|
|
|
[dex %type] :: XX proper print
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ hin=$(sut p.sut)
|
|
|
|
=+ yon=$(dex p.hin, sut q.sut)
|
|
|
|
:- p.yon
|
|
|
|
?: =(%void q.hin)
|
|
|
|
q.yon
|
|
|
|
?: |(=(%void q.yon) =(q.hin q.yon))
|
|
|
|
q.hin
|
|
|
|
:- %pick
|
2015-12-04 18:16:34 +03:00
|
|
|
?. ?=({$pick *} q.yon)
|
2013-09-29 00:21:18 +04:00
|
|
|
[q.hin q.yon ~]
|
|
|
|
?> ?=(^ p.q.yon)
|
|
|
|
?:(=(q.hin i.p.q.yon) p.q.yon [q.hin p.q.yon])
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$hold *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ hey=(~(get by p.dex) sut)
|
|
|
|
?^ hey
|
|
|
|
[dex [%stop u.hey]]
|
|
|
|
?: (~(has in gil) sut)
|
2014-12-02 23:03:45 +03:00
|
|
|
=+ dyr=+(~(wyt by p.dex))
|
2013-09-29 00:21:18 +04:00
|
|
|
[[(~(put by p.dex) sut dyr) q.dex] [%stop dyr]]
|
|
|
|
=+ rom=$(gil (~(put in gil) sut), sut repo)
|
|
|
|
=+ rey=(~(get by p.p.rom) sut)
|
|
|
|
?~ rey
|
|
|
|
rom
|
|
|
|
[[p.p.rom (~(put by q.p.rom) u.rey q.rom)] [%stop u.rey]]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ duck ^-(tank (dial dole))
|
2013-12-05 02:30:09 +04:00
|
|
|
++ dune |.(duck)
|
2013-09-29 00:21:18 +04:00
|
|
|
++ dunk
|
|
|
|
|= paz=term ^- tank
|
|
|
|
:+ %palm
|
|
|
|
[['.' ~] ['-' ~] ~ ~]
|
|
|
|
[[%leaf (mesc (trip paz))] duck ~]
|
|
|
|
::
|
2013-12-31 23:30:37 +04:00
|
|
|
++ fino
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {dep+@ud way+?($read $rite $both $free) cog+term}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ gil=*(set type)
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- {p+@ud q+(unit post)}
|
2013-09-29 00:21:18 +04:00
|
|
|
?+ sut [dep ~]
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bull *}
|
2013-12-26 21:12:07 +04:00
|
|
|
?. =(cog p.p.sut)
|
2014-01-02 00:47:18 +04:00
|
|
|
$(sut q.sut)
|
2013-12-26 21:12:07 +04:00
|
|
|
?. ?=(0 dep)
|
2014-01-02 00:47:18 +04:00
|
|
|
$(dep (dec dep), sut q.sut)
|
2013-12-31 23:30:37 +04:00
|
|
|
[0 ~ 1 %2 p.sut q.sut]
|
2013-12-26 21:12:07 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cell *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ taf=$(sut p.sut)
|
|
|
|
?~ q.taf
|
|
|
|
=+ bov=$(dep p.taf, sut q.sut)
|
|
|
|
?~ q.bov
|
|
|
|
bov
|
|
|
|
[p.bov ~ (peg 3 p.u.q.bov) q.u.q.bov]
|
|
|
|
[p.taf ~ (peg 2 p.u.q.taf) q.u.q.taf]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ zem=(look cog q.r.q.sut)
|
|
|
|
=> ^+(. ?:(|(=(~ zem) =(0 dep)) . .(dep (dec dep), zem ~)))
|
|
|
|
?^ zem
|
2013-12-31 23:30:37 +04:00
|
|
|
[dep ~ 1 [%1 (peg 2 p.u.zem) [[sut(p.q %gold) q.u.zem] ~]]]
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ taf=$(sut p.sut)
|
|
|
|
?~ q.taf
|
2013-12-09 01:23:03 +04:00
|
|
|
taf
|
2013-09-29 00:21:18 +04:00
|
|
|
?. (park way p.u.q.taf)
|
|
|
|
~|(%find-park !!)
|
|
|
|
[p.taf ~ (peg 3 p.u.q.taf) q.u.q.taf]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cube *}
|
2013-09-29 00:21:18 +04:00
|
|
|
$(sut repo)
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$face *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(cog p.sut)
|
|
|
|
?. ?=(0 dep)
|
2013-12-09 01:23:03 +04:00
|
|
|
[(dec dep) ~]
|
2013-12-31 23:30:37 +04:00
|
|
|
[0 ~ 1 %0 q.sut]
|
2013-09-29 00:21:18 +04:00
|
|
|
[dep ~]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$fork *}
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %fork
|
|
|
|
?: (~(has in gil) q.sut)
|
|
|
|
$(sut p.sut)
|
|
|
|
?: (~(has in gil) p.sut)
|
|
|
|
$(sut q.sut)
|
|
|
|
=+ [hax=$(sut p.sut) yor=$(sut q.sut)]
|
|
|
|
~| %find-fork
|
|
|
|
?: =(hax yor)
|
|
|
|
hax
|
2013-12-31 23:30:37 +04:00
|
|
|
?> &(?=(^ q.hax) ?=(^ q.yor) =(p.hax p.yor) =(p.u.q.hax p.u.q.yor))
|
|
|
|
:- p.hax
|
|
|
|
?- -.q.u.q.hax
|
|
|
|
0 ?> ?=(0 -.q.u.q.yor)
|
|
|
|
[~ p.u.q.hax %0 (fork p.q.u.q.hax p.q.u.q.yor)]
|
|
|
|
1 ?> &(?=(1 -.q.u.q.yor) =(p.q.u.q.yor p.q.u.q.hax))
|
|
|
|
[~ p.u.q.hax %1 p.q.u.q.hax (weld q.q.u.q.hax q.q.u.q.yor)]
|
2014-04-07 21:16:57 +04:00
|
|
|
2 ?> ?& ?=(2 -.q.u.q.yor)
|
2013-12-31 23:30:37 +04:00
|
|
|
=(p.p.q.u.q.hax p.p.q.u.q.yor)
|
|
|
|
=(q.p.q.u.q.hax q.p.q.u.q.yor)
|
2014-01-02 00:47:18 +04:00
|
|
|
=(r.p.q.u.q.hax r.p.q.u.q.yor)
|
2013-12-31 23:30:37 +04:00
|
|
|
==
|
|
|
|
:* ~
|
|
|
|
p.u.q.hax
|
|
|
|
%2
|
2014-04-07 21:16:57 +04:00
|
|
|
:* p.p.q.u.q.hax
|
|
|
|
q.p.q.u.q.hax
|
|
|
|
r.p.q.u.q.hax
|
2014-01-02 00:47:18 +04:00
|
|
|
(fork s.p.q.u.q.hax s.p.q.u.q.yor)
|
|
|
|
==
|
2013-12-31 23:30:37 +04:00
|
|
|
(fork q.q.u.q.hax q.q.u.q.yor)
|
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$hold *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: (~(has in gil) sut)
|
|
|
|
[dep ~]
|
|
|
|
$(gil (~(put in gil) sut), sut repo)
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ fink
|
|
|
|
~/ %fink
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {dep+@ud way+?($read $rite $both $free) cog+term}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- port
|
2014-02-11 09:34:24 +04:00
|
|
|
:: ~_ (dunk 'type')
|
2014-01-05 02:57:44 +04:00
|
|
|
~_ (show [%c 'find-limb'] ?:(=(%$ cog) '$' [%a cog]))
|
2013-12-31 23:30:37 +04:00
|
|
|
=+ hoq=(fino dep way cog)
|
|
|
|
?~ q.hoq
|
|
|
|
~|(%find-none !!)
|
|
|
|
(flee u.q.hoq)
|
|
|
|
::
|
|
|
|
++ finq
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {dep+@ud way+?($read $rite $both $free) cog+term}
|
2013-12-31 23:30:37 +04:00
|
|
|
^- post
|
2014-01-05 02:57:44 +04:00
|
|
|
:: ~_ (dunk 'type')
|
|
|
|
~_ (show [%c 'find-limb'] ?:(=(%$ cog) '$' [%a cog]))
|
2013-12-31 23:30:37 +04:00
|
|
|
=+ hoq=(fino dep way cog)
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ q.hoq
|
|
|
|
~|(%find-none !!)
|
|
|
|
u.q.hoq
|
|
|
|
::
|
|
|
|
++ fire
|
|
|
|
~/ %fire
|
2015-12-04 18:16:34 +03:00
|
|
|
|= hag+(list {p+type q+foot})
|
2013-09-29 00:21:18 +04:00
|
|
|
^- type
|
2015-12-08 04:23:27 +03:00
|
|
|
?: ?=({{* {$elm $~ $1}} $~} hag)
|
2013-09-29 00:21:18 +04:00
|
|
|
p.i.hag
|
|
|
|
:- %hold
|
|
|
|
%+ turn
|
|
|
|
hag.$
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {p+type q+foot}
|
|
|
|
?. ?=({$core *} p)
|
2013-09-29 00:21:18 +04:00
|
|
|
~|(%fire-core !!)
|
|
|
|
=+ dox=[%core q.q.p q.p]
|
2015-12-04 18:16:34 +03:00
|
|
|
?: ?=($ash -.q)
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %fire-ash
|
2014-01-05 02:57:44 +04:00
|
|
|
:: ~_ (dunk(sut [%cell q.q.p p.p]) %fire-dry)
|
2013-09-29 00:21:18 +04:00
|
|
|
?> ?|(!vet (nest(sut q.q.p) & p.p))
|
|
|
|
[dox p.q]
|
|
|
|
~| [%fire-odd -.q]
|
2015-12-04 18:16:34 +03:00
|
|
|
?> ?=($elm -.q)
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %fire-elm
|
2014-01-05 02:57:44 +04:00
|
|
|
:: ~_ (dunk(sut [%cell q.q.p p.p]) %fire-wet)
|
2013-12-09 01:23:03 +04:00
|
|
|
?> ?| !vet
|
2013-09-29 00:21:18 +04:00
|
|
|
(~(has in rib) [sut dox p.q])
|
|
|
|
(mull(sut p, rib (~(put in rib) [sut dox p.q])) %noun dox p.q)
|
|
|
|
==
|
|
|
|
[p p.q]
|
|
|
|
::
|
|
|
|
++ firm
|
|
|
|
~/ %firm
|
2015-12-04 18:16:34 +03:00
|
|
|
|= dib+*
|
|
|
|
=+ bix=*(set {type *})
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- ?
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *} !.?(dib)
|
|
|
|
{$bull *} &($(sut q.sut) $(sut s.p.sut, dib .*(dib [0 r.p.sut])))
|
|
|
|
{$cell *} &(.?(dib) $(sut p.sut, dib -.dib) $(sut q.sut, dib +.dib))
|
|
|
|
{$core *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?& .?(dib)
|
|
|
|
$(sut p.sut, dib -.dib)
|
|
|
|
=(+.dib ?:(=(~ p.r.q.sut) ~|(%firm-core !!) p.r.q.sut))
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cube *} =(dib p.sut)
|
|
|
|
{$face *} $(sut q.sut)
|
|
|
|
{$fork *} |($(sut p.sut) $(sut q.sut))
|
|
|
|
{$hold *}
|
2013-12-09 01:23:03 +04:00
|
|
|
?| (~(has in bix) [sut dib])
|
2013-09-29 00:21:18 +04:00
|
|
|
$(bix (~(put in bix) [sut dib]), sut repo)
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$noun &
|
|
|
|
$void |
|
2013-12-09 01:23:03 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ fish
|
|
|
|
~/ %fish
|
2015-12-04 18:16:34 +03:00
|
|
|
|= axe+axis
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vot=*(set type)
|
2013-12-26 21:12:07 +04:00
|
|
|
|- ^- nock
|
2013-09-29 00:21:18 +04:00
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
$void [%1 1]
|
|
|
|
$noun [%1 0]
|
|
|
|
{$atom *} (flip [%3 %0 axe])
|
|
|
|
{$bull *} ~|(%bull-fish !!)
|
|
|
|
{$cell *}
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ flan
|
|
|
|
[%3 %0 axe]
|
|
|
|
(flan $(sut p.sut, axe (peg axe 2)) $(sut q.sut, axe (peg axe 3)))
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *} [%0 0]
|
|
|
|
{$cube *} [%5 [%1 p.sut] [%0 axe]]
|
|
|
|
{$face *} $(sut q.sut)
|
|
|
|
{$fork *} (flor $(sut p.sut) $(sut q.sut))
|
|
|
|
{$hold *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: (~(has in vot) sut)
|
|
|
|
[%0 0]
|
|
|
|
=> %=(. vot (~(put in vot) sut))
|
|
|
|
$(sut repo)
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ fuse
|
|
|
|
~/ %fuse
|
2015-12-04 18:16:34 +03:00
|
|
|
|= ref+type
|
|
|
|
=+ bix=*(set {type type})
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- type
|
|
|
|
?: ?|(=(sut ref) =(%noun ref))
|
|
|
|
sut
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?- ref
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *} ?:((fitz p.ref p.sut) sut ref)
|
|
|
|
{$cell *} %void
|
2013-09-29 00:21:18 +04:00
|
|
|
* $(sut ref, ref sut)
|
|
|
|
==
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bull *} (bull p.sut $(sut q.sut))
|
|
|
|
{$cell *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?- ref
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cell *} (cell $(sut p.sut, ref p.ref) $(sut q.sut, ref q.ref))
|
2013-09-29 00:21:18 +04:00
|
|
|
* $(sut ref, ref sut)
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *} $(sut repo)
|
|
|
|
{$cube *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ foz=$(sut q.sut)
|
|
|
|
?: (firm(sut foz) p.sut)
|
|
|
|
(cube p.sut foz)
|
|
|
|
%void
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$face *} (face p.sut $(sut q.sut))
|
|
|
|
{$fork *} (fork $(sut p.sut) $(sut q.sut))
|
|
|
|
{$hold *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: (~(has in bix) [sut ref])
|
|
|
|
~|(%fuse-loop !!)
|
2015-12-05 02:59:29 +03:00
|
|
|
(reco |=(a+type ^$(sut a, bix (~(put in bix) [sut ref]))))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$noun ref
|
|
|
|
$void %void
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2013-12-09 01:23:03 +04:00
|
|
|
++ gain
|
|
|
|
~/ %gain
|
2015-12-04 18:16:34 +03:00
|
|
|
|= gen+twig ^- type
|
2013-09-29 00:21:18 +04:00
|
|
|
(chip & gen)
|
|
|
|
::
|
|
|
|
++ hang
|
|
|
|
~/ %hang
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {dab+(map term foot) rud+(map term foot)}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- (map term foot)
|
|
|
|
=+ goy=(~(tap by rud) ~)
|
|
|
|
=+ waf=dab
|
|
|
|
|- ^+ dab
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ goy
|
2013-09-29 00:21:18 +04:00
|
|
|
waf
|
|
|
|
~| [%hang-on p.i.goy]
|
|
|
|
=+ yeq=(~(get by dab) p.i.goy)
|
2015-12-08 05:04:19 +03:00
|
|
|
?< ?=($~ yeq)
|
2013-09-29 00:21:18 +04:00
|
|
|
?- -.u.yeq
|
2015-12-04 18:16:34 +03:00
|
|
|
$ash
|
|
|
|
?> ?=({$ash *} q.i.goy)
|
2013-09-29 00:21:18 +04:00
|
|
|
$(goy t.goy, waf (~(put by waf) p.i.goy q.i.goy))
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$elm
|
2013-09-29 00:21:18 +04:00
|
|
|
~|([%hang-elm p.i.goy] !!)
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$oak
|
|
|
|
?> ?=({$yew *} q.i.goy)
|
2013-09-29 00:21:18 +04:00
|
|
|
$(goy t.goy, waf (~(put by waf) p.i.goy q.i.goy))
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$yew
|
|
|
|
?> ?=({$yew *} q.i.goy)
|
2013-09-29 00:21:18 +04:00
|
|
|
%= $
|
|
|
|
goy t.goy
|
|
|
|
waf
|
|
|
|
%+ ~(put by waf)
|
|
|
|
p.i.goy
|
|
|
|
[%yew ^$(dab p.u.yeq, rud p.q.i.goy)]
|
|
|
|
==
|
2013-12-09 01:23:03 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ harp
|
|
|
|
|= dab=(map term foot)
|
2015-12-08 05:04:19 +03:00
|
|
|
^- ?($~ ^)
|
|
|
|
?: ?=($~ dab)
|
2013-09-29 00:21:18 +04:00
|
|
|
~
|
|
|
|
=+ ^= vad
|
|
|
|
?+ -.q.n.dab !!
|
2015-12-04 18:16:34 +03:00
|
|
|
$ash q:(mint %noun p.q.n.dab)
|
|
|
|
$elm q:(mint(vet |) %noun p.q.n.dab)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
?- dab
|
2015-12-04 18:16:34 +03:00
|
|
|
{* $~ $~} vad
|
|
|
|
{* $~ *} [vad $(dab r.dab)]
|
|
|
|
{* * $~} [vad $(dab l.dab)]
|
|
|
|
{* * *} [vad $(dab l.dab) $(dab r.dab)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ lose
|
|
|
|
~/ %lose
|
2015-12-04 18:16:34 +03:00
|
|
|
|= gen+twig ^- type
|
2013-09-29 00:21:18 +04:00
|
|
|
(chip | gen)
|
|
|
|
::
|
|
|
|
++ chip
|
|
|
|
~/ %chip
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {way+? gen+twig} ^- type
|
|
|
|
?: ?=({$wtts *} gen)
|
2014-01-01 10:48:21 +04:00
|
|
|
(cool way q.gen (play ~(bunt al p.gen)))
|
2015-12-04 18:16:34 +03:00
|
|
|
?: ?&(way ?=({$wtpm *} gen))
|
2013-12-31 23:30:37 +04:00
|
|
|
|-(?~(p.gen sut $(p.gen t.p.gen, sut ^$(gen i.p.gen))))
|
2015-12-04 18:16:34 +03:00
|
|
|
?: ?&(!way ?=({$wtbr *} gen))
|
2013-12-31 23:30:37 +04:00
|
|
|
|-(?~(p.gen sut $(p.gen t.p.gen, sut ^$(gen i.p.gen))))
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ neg=~(open ap gen)
|
|
|
|
?:(=(neg gen) sut $(gen neg))
|
|
|
|
::
|
|
|
|
++ heal
|
|
|
|
~/ %heal
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {qog+(unit term) axe+axis ref+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- type
|
|
|
|
?: =(1 axe)
|
2013-12-26 21:12:07 +04:00
|
|
|
?~ qog
|
2013-09-29 00:21:18 +04:00
|
|
|
ref
|
|
|
|
|- ^- type
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bull *} ~& %heal-bull
|
2014-02-11 09:34:24 +04:00
|
|
|
?: =(u.qog p.p.sut)
|
|
|
|
ref
|
|
|
|
(busk(sut $(sut q.sut)) p.p.sut q.p.sut)
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *} ref
|
|
|
|
{$face *} ?.(=(u.qog p.sut) ~|('heal-name' !!) (face p.sut ref))
|
|
|
|
{$fork *} (fork $(sut p.sut) $(sut q.sut))
|
|
|
|
{$hold *} $(sut repo)
|
2013-09-29 00:21:18 +04:00
|
|
|
* ~|([%name u.qog] ~|('heal-name' !!))
|
|
|
|
==
|
|
|
|
=+ [now=(cap axe) lat=(mas axe)]
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ gil=*(set type)
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^- type
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *} %void
|
|
|
|
{$bull *} (busk(sut $(sut q.sut)) p.p.sut q.p.sut)
|
|
|
|
{$cell *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(2 now)
|
|
|
|
(cell ^$(sut p.sut, axe lat) q.sut)
|
|
|
|
(cell p.sut ^$(sut q.sut, axe lat))
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *}
|
2013-12-09 01:23:03 +04:00
|
|
|
?. =(3 now)
|
2013-09-29 00:21:18 +04:00
|
|
|
~|(%heal-core !!)
|
|
|
|
(core ^$(sut p.sut, axe lat) q.sut)
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$face *} (face p.sut $(sut q.sut))
|
|
|
|
{$fork *} (fork $(sut p.sut) $(sut q.sut))
|
|
|
|
{$hold *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?:((~(has in gil) sut) %void $(gil (~(put in gil) sut), sut repo))
|
|
|
|
::
|
|
|
|
* $(sut repo)
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ mint
|
|
|
|
~/ %mint
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {gol+type gen+twig}
|
|
|
|
^- {p+type q+nock}
|
|
|
|
|^ ^- {p+type q+nock}
|
|
|
|
?: ?&(=(%void sut) !?=({$zpcb *} gen))
|
|
|
|
?. |(!vet ?=({$zpfs *} gen) ?=({$zpzp *} gen))
|
2013-09-29 00:21:18 +04:00
|
|
|
~|(%mint-vain !!)
|
|
|
|
[%void %0 0]
|
|
|
|
?- gen
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{^ *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ hed=$(gen p.gen, gol %noun)
|
|
|
|
=+ tal=$(gen q.gen, gol %noun)
|
|
|
|
[(nice (cell p.hed p.tal)) (cons q.hed q.tal)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bcpt *} $(gen (~(whip al q.gen) p:(seep %read p.gen)))
|
|
|
|
{$brcn *} (grow %gold [~ 1] p.gen)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cnts *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ lar=(foil (seek %read p.gen))
|
2013-12-15 12:23:23 +04:00
|
|
|
=+ mew=(snub q.gen)
|
|
|
|
=- [(nice p.yom) ?:(=(0 p.q.lar) q.yom [%9 p.q.lar q.yom])]
|
|
|
|
^= yom
|
2015-12-04 18:16:34 +03:00
|
|
|
=+ hej=*(list {p+axis q+nock})
|
2015-12-08 04:46:28 +03:00
|
|
|
|- ^- {p+type q+nock}
|
2013-12-16 03:40:44 +04:00
|
|
|
?~ mew
|
2013-12-15 12:23:23 +04:00
|
|
|
[(fire q.q.lar) (hike p.lar hej)]
|
|
|
|
=+ zil=^$(gen q.i.mew, gol %noun)
|
|
|
|
=+ wip=(tock p.i.mew p.zil q.q.lar)
|
|
|
|
$(mew t.mew, q.q.lar q.wip, hej [[p.wip q.zil] hej])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$dtkt *} [(nice %noun) [%11 q:$(gen p.gen, gol %noun)]]
|
|
|
|
{$dtls *} [(nice [%atom %$]) [%4 q:$(gen p.gen, gol [%atom %$])]]
|
|
|
|
{$dtzy *} [(nice (play gen)) [%1 q.gen]]
|
|
|
|
{$dtzz *} [(nice (play gen)) [%1 q.gen]]
|
|
|
|
{$dttr *}
|
2013-09-29 00:21:18 +04:00
|
|
|
[(nice %noun) [%2 q:$(gen p.gen, gol %noun) q:$(gen q.gen, gol %noun)]]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$dtts *}
|
2014-06-02 01:07:13 +04:00
|
|
|
[(nice bool) [%5 q:$(gen p.gen, gol %noun) q:$(gen q.gen, gol %noun)]]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$dtwt *} [(nice bool) [%3 q:$(gen p.gen, gol %noun)]]
|
|
|
|
{$ktbr *} =+(vat=$(gen p.gen) [(wrap(sut p.vat) %iron) q.vat])
|
2014-06-11 18:06:36 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$ktls *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+(hif=(nice (play p.gen)) [hif q:$(gen q.gen, gol hif)])
|
2014-06-11 18:06:36 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$kthx *}
|
2014-06-11 18:06:36 +04:00
|
|
|
=+(hif=(nice (play p.gen)) [hif q:$(gen q.gen, gol hif)])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$ktpm *} =+(vat=$(gen p.gen) [(wrap(sut p.vat) %zinc) q.vat])
|
|
|
|
{$ktsg *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ nef=$(gen p.gen)
|
|
|
|
=+ moc=(mink [burn q.nef] |=(* ~))
|
|
|
|
[p.nef ?:(?=(0 -.moc) [%1 p.moc] q.nef)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$ktts *} =+(vat=$(gen q.gen) [(conk(sut p.vat) p.gen) q.vat])
|
|
|
|
{$ktwt *} =+(vat=$(gen p.gen) [(wrap(sut p.vat) %lead) q.vat])
|
|
|
|
{$sgzp *} ~_(duck(sut (play p.gen)) $(gen q.gen))
|
|
|
|
{$sggr *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ hum=$(gen q.gen)
|
2015-07-17 21:55:32 +03:00
|
|
|
:: ?: &(huz !?=($|(@ [?(%fast %memo) ^]) p.gen))
|
|
|
|
:: hum
|
2013-09-29 00:21:18 +04:00
|
|
|
:- p.hum
|
|
|
|
:+ %10
|
|
|
|
?- p.gen
|
|
|
|
@ p.gen
|
|
|
|
^ [p.p.gen q:$(gen q.p.gen, gol %noun)]
|
|
|
|
==
|
|
|
|
q.hum
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$tsgr *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ fid=$(gen p.gen, gol %noun)
|
|
|
|
=+ dov=$(sut p.fid, gen q.gen)
|
|
|
|
[p.dov (comb q.fid q.dov)]
|
2013-12-26 21:12:07 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$tstr *}
|
2014-01-04 06:59:56 +04:00
|
|
|
$(gen r.gen, sut (busk p.gen q.gen))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtcl *}
|
2014-06-02 01:07:13 +04:00
|
|
|
=+ nor=$(gen p.gen, gol bool)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ fex=(gain p.gen)
|
|
|
|
=+ wux=(lose p.gen)
|
|
|
|
=+ ^= duy
|
|
|
|
?: =(%void fex)
|
|
|
|
?:(=(%void wux) [%0 0] [%1 1])
|
|
|
|
?:(=(%void wux) [%1 0] q.nor)
|
|
|
|
=+ hiq=$(sut fex, gen q.gen)
|
|
|
|
=+ ran=$(sut wux, gen r.gen)
|
|
|
|
[(fork p.hiq p.ran) (cond duy q.hiq q.ran)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtts *}
|
2014-06-02 01:07:13 +04:00
|
|
|
:- (nice bool)
|
2014-04-07 21:16:57 +04:00
|
|
|
%- fish(sut (play ~(bunt al p.gen)))
|
2014-01-05 07:18:06 +04:00
|
|
|
(cove q:$(gen [%cnzz q.gen], gol %noun))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$zpcb *}
|
2014-01-05 02:57:44 +04:00
|
|
|
~_ (show %o p.gen)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ hum=$(gen q.gen)
|
|
|
|
[p.hum [%10 [%spot %1 p.gen] q.hum]]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$zpcm *} [(nice (play p.gen)) [%1 q.gen]] :: XX validate!
|
|
|
|
{$zpcn $~} =+(pet=seed [(nice p.pet) [%1 q.pet]])
|
|
|
|
{$zpfs *}
|
2013-12-09 01:23:03 +04:00
|
|
|
?: vet
|
2014-01-05 02:57:44 +04:00
|
|
|
~_ (dunk(sut (play p.gen)) 'lost')
|
2013-09-29 00:21:18 +04:00
|
|
|
~|(%mint-lost !!)
|
|
|
|
[%void [%0 0]]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$zpsm *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vos=$(gol %noun, gen q.gen) :: XX validate!
|
2014-01-05 06:05:33 +04:00
|
|
|
:: [(nice (cell (sift (play p.gen)) p.vos)) (cons [%1 p.vos] q.vos)]
|
2013-09-29 00:21:18 +04:00
|
|
|
[(nice (cell (play p.gen) p.vos)) (cons [%1 p.vos] q.vos)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$zpts *} [(nice %noun) [%1 q:$(vet |, gen p.gen)]]
|
|
|
|
{$zpzp $~} [%void [%0 0]]
|
2013-12-09 01:23:03 +04:00
|
|
|
*
|
|
|
|
=+ doz=~(open ap gen)
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(doz gen)
|
2014-01-05 02:57:44 +04:00
|
|
|
~_ (show [%c 'hoon'] [%q gen])
|
2013-09-29 00:21:18 +04:00
|
|
|
~|(%mint-open !!)
|
|
|
|
$(gen doz)
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ nice
|
2015-12-04 18:16:34 +03:00
|
|
|
|= typ+type
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %mint-nice
|
|
|
|
?> ?|(!vet (nest(sut gol) & typ))
|
|
|
|
typ
|
|
|
|
::
|
|
|
|
++ grow
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {mel+?($gold $iron $lead $zinc) ruf+twig dab+(map term foot)}
|
|
|
|
^- {p+type q+nock}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ dan=^$(gen ruf, gol %noun)
|
|
|
|
=+ toc=(core p.dan [%gold p.dan [~ dab]])
|
|
|
|
=+ dez=(harp(sut toc) dab)
|
|
|
|
:- (nice (core p.dan mel p.dan [dez dab]))
|
|
|
|
(cons [%1 dez] q.dan)
|
|
|
|
--
|
|
|
|
::
|
|
|
|
++ moot
|
|
|
|
=+ gil=*(set type)
|
|
|
|
|- ^- ?
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *} |
|
|
|
|
{$bull *} $(sut q.sut)
|
|
|
|
{$cell *} |($(sut p.sut) $(sut q.sut))
|
|
|
|
{$core *} $(sut p.sut)
|
|
|
|
{$cube *} |
|
|
|
|
{$face *} $(sut q.sut)
|
|
|
|
{$fork *} &($(sut p.sut) $(sut q.sut))
|
|
|
|
{$hold *} |((~(has in gil) sut) $(gil (~(put in gil) sut), sut repo))
|
|
|
|
$noun |
|
|
|
|
$void &
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ mull
|
|
|
|
~/ %mull
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {gol+type dox+type gen+twig}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
|
|
|
?. vet
|
|
|
|
&
|
|
|
|
=< &
|
2015-12-08 04:46:28 +03:00
|
|
|
|^ ^- {p+type q+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(%void sut)
|
|
|
|
~|(%mull-none !!)
|
|
|
|
?- gen
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{^ *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ hed=$(gen p.gen, gol %noun)
|
|
|
|
=+ tal=$(gen q.gen, gol %noun)
|
|
|
|
[(nice (cell p.hed p.tal)) (cell q.hed q.tal)]
|
2014-01-04 11:28:16 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bcpt *}
|
2014-01-04 11:28:16 +04:00
|
|
|
=+ sep=(seep %read p.gen)
|
|
|
|
=+ pox=(seep(sut dox) %read p.gen)
|
|
|
|
?. =(p.pox p.sep) ~|(%mull-bonk-wing !!)
|
|
|
|
$(gen (~(whip al q.gen) p.sep))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$brcn *} (grow %gold [~ 1] p.gen)
|
|
|
|
{$cnts *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ lar=(foil (seek %read p.gen))
|
|
|
|
=+ vug=(foil (seek(sut dox) %read p.gen))
|
2013-12-15 12:23:23 +04:00
|
|
|
?. &(=(p.lar p.vug) =(p.q.lar p.q.vug))
|
|
|
|
~|(%mull-bonk-e !!)
|
|
|
|
=+ mew=(snub q.gen)
|
|
|
|
=- [(nice (fire p.yom)) (fire(vet |) q.yom)]
|
|
|
|
^= yom
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- {p+(list {p+type q+foot}) q+(list {p+type q+foot})}
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ mew
|
2013-12-15 12:23:23 +04:00
|
|
|
[q.q.lar q.q.vug]
|
|
|
|
=+ zil=^$(gen q.i.mew, gol %noun)
|
|
|
|
=+ cuf=(tock p.i.mew p.zil q.q.lar)
|
|
|
|
=+ dof=(tock p.i.mew q.zil q.q.vug)
|
|
|
|
?. .=(p.cuf p.dof)
|
|
|
|
~|(%mull-bonk-f !!)
|
|
|
|
$(mew t.mew, q.q.lar q.cuf, q.q.vug q.dof)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$dtkt *} =+($(gen p.gen, gol %noun) (beth %noun))
|
|
|
|
{$dtls *} =+($(gen p.gen, gol [%atom %$]) (beth [%atom %$]))
|
|
|
|
{$dtzy *} (beth (play gen))
|
|
|
|
{$dtzz *} (beth (play gen))
|
|
|
|
{$dttr *}
|
2014-07-09 11:37:47 +04:00
|
|
|
=+([$(gen p.gen, gol %noun) $(gen q.gen, gol %noun)] (beth %noun))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$dtts *}
|
2014-07-09 11:37:47 +04:00
|
|
|
=+([$(gen p.gen, gol %noun) $(gen q.gen, gol %noun)] (beth bool))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$dtwt *} =+($(gen p.gen, gol %noun) (beth bool)) :: XX =|
|
|
|
|
{$ktbr *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+(vat=$(gen p.gen) [(wrap(sut p.vat) %iron) (wrap(sut q.vat) %iron)])
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$ktls *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ hif=[p=(nice (play p.gen)) q=(play(sut dox) p.gen)]
|
|
|
|
=+($(gen q.gen, gol p.hif) hif)
|
2014-06-11 18:06:36 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$kthx *}
|
2014-06-11 18:06:36 +04:00
|
|
|
=+ hif=[p=(nice (play p.gen)) q=(play(sut dox) p.gen)]
|
|
|
|
=+($(gen q.gen, gol p.hif) hif)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$ktpm *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+(vat=$(gen p.gen) [(wrap(sut p.vat) %zinc) (wrap(sut q.vat) %zinc)])
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$ktts *}
|
2013-12-21 05:02:26 +04:00
|
|
|
=+(vat=$(gen q.gen) [(conk(sut p.vat) p.gen) (conk(sut q.vat) p.gen)])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$ktwt *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+(vat=$(gen p.gen) [(wrap(sut p.vat) %lead) (wrap(sut q.vat) %lead)])
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$ktsg *} $(gen p.gen)
|
|
|
|
{$sgzp *} ~_(duck(sut (play p.gen)) $(gen q.gen))
|
|
|
|
{$sggr *} $(gen q.gen)
|
|
|
|
{$tsgr *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ lem=$(gen p.gen, gol %noun)
|
|
|
|
$(gen q.gen, sut p.lem, dox q.lem)
|
2013-12-26 21:12:07 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$tstr *}
|
2013-12-26 21:12:07 +04:00
|
|
|
%= $
|
|
|
|
gen r.gen
|
2014-01-04 06:59:56 +04:00
|
|
|
sut (busk p.gen q.gen)
|
|
|
|
dox (busk(sut dox) p.gen q.gen)
|
2013-12-26 21:12:07 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtcl *}
|
2014-06-02 01:07:13 +04:00
|
|
|
=+ nor=$(gen p.gen, gol bool)
|
2015-12-08 04:46:28 +03:00
|
|
|
=+ ^= hiq ^- {p+type q+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ fex=[p=(gain p.gen) q=(gain(sut dox) p.gen)]
|
|
|
|
?: =(%void p.fex)
|
|
|
|
[%void ?:(=(%void q.fex) %void ~|(%wtcl-z (play(sut q.fex) q.gen)))]
|
|
|
|
?: =(%void q.fex)
|
|
|
|
~|(%mull-bonk-b !!)
|
|
|
|
$(sut p.fex, dox q.fex, gen q.gen)
|
2015-12-08 04:46:28 +03:00
|
|
|
=+ ^= ran ^- {p+type q+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ wux=[p=(lose p.gen) q=(lose(sut dox) p.gen)]
|
|
|
|
?: =(%void p.wux)
|
|
|
|
[%void ?:(=(%void q.wux) %void ~|(%wtcl-a (play(sut q.wux) r.gen)))]
|
|
|
|
?: =(%void q.wux)
|
|
|
|
~|(%mull-bonk-c !!)
|
|
|
|
$(sut p.wux, dox q.wux, gen r.gen)
|
|
|
|
[(nice (fork p.hiq p.ran)) (fork q.hiq q.ran)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$wtts *}
|
2013-12-27 06:43:25 +04:00
|
|
|
=+ nob=~(bunt al p.gen)
|
|
|
|
=+ waz=[p=(play nob) q=(play(sut dox) nob)]
|
2014-01-05 07:18:06 +04:00
|
|
|
=+ ^= syx :- p=(cove q:(mint %noun [%cnzz q.gen]))
|
|
|
|
q=(cove q:(mint(sut dox) %noun [%cnzz q.gen]))
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ pov=[p=(fish(sut p.waz) p.syx) q=(fish(sut q.waz) q.syx)]
|
|
|
|
?. &(=(p.syx q.syx) =(p.pov q.pov))
|
|
|
|
~|(%mull-bonk-a !!)
|
2014-07-09 11:37:47 +04:00
|
|
|
(beth bool)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$zpcb *} ~_((show %o p.gen) $(gen q.gen))
|
|
|
|
{$zpcm *} [(nice (play p.gen)) (play(sut dox) p.gen)]
|
|
|
|
{$zpcn *} =+(pet=seed [(nice p.pet) p.pet])
|
|
|
|
{$zpfs *}
|
2013-12-09 01:23:03 +04:00
|
|
|
?: vet
|
2014-01-05 02:57:44 +04:00
|
|
|
:: ~_ (dunk(sut (play p.gen)) 'also')
|
2013-09-29 00:21:18 +04:00
|
|
|
~|(%mull-skip !!)
|
2014-07-09 11:37:47 +04:00
|
|
|
(beth %void)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$zpts *} (beth %noun)
|
|
|
|
{$zpsm *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vos=$(gol %noun, gen q.gen) :: XX validate!
|
|
|
|
[(nice (cell (play p.gen) p.vos)) (cell (play(sut dox) p.gen) q.vos)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$zpzp *} (beth %void)
|
2013-09-29 00:21:18 +04:00
|
|
|
*
|
2013-12-09 01:23:03 +04:00
|
|
|
=+ doz=~(open ap gen)
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(doz gen)
|
2014-01-05 02:57:44 +04:00
|
|
|
~_ (show [%c 'hoon'] [%q gen])
|
2013-09-29 00:21:18 +04:00
|
|
|
~|(%mull-open !!)
|
|
|
|
$(gen doz)
|
|
|
|
==
|
|
|
|
::
|
2014-07-09 11:37:47 +04:00
|
|
|
++ beth
|
2015-12-04 18:16:34 +03:00
|
|
|
|= typ+type
|
2013-09-29 00:21:18 +04:00
|
|
|
[(nice typ) typ]
|
|
|
|
::
|
|
|
|
++ nice
|
2015-12-04 18:16:34 +03:00
|
|
|
|= typ+type
|
2014-01-05 02:57:44 +04:00
|
|
|
:: ~_ (dunk(sut gol) 'need')
|
|
|
|
:: ~_ (dunk(sut typ) 'have')
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %mull-nice
|
|
|
|
?> ?|(!vet (nest(sut gol) & typ))
|
|
|
|
typ
|
|
|
|
::
|
|
|
|
++ grow
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {mel+?($gold $iron $lead $zinc) ruf+twig dab+(map term foot)}
|
2013-09-29 00:21:18 +04:00
|
|
|
~| %mull-grow
|
2015-12-04 18:16:34 +03:00
|
|
|
^- {p+type q+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ dan=^$(gen ruf, gol %noun)
|
|
|
|
=+ ^= toc :- p=(core p.dan [%gold p.dan [~ dab]])
|
|
|
|
q=(core q.dan [%gold q.dan [~ dab]])
|
|
|
|
=+ (bake(sut p.toc, dox q.toc) dab)
|
|
|
|
:- (nice (core p.dan mel p.dan [[%0 0] dab]))
|
|
|
|
(core q.dan [mel q.dan [[%0 0] dab]])
|
|
|
|
::
|
|
|
|
++ bake
|
2015-12-04 18:16:34 +03:00
|
|
|
|= dab+(map term foot)
|
2013-09-29 00:21:18 +04:00
|
|
|
^- *
|
2015-12-08 05:04:19 +03:00
|
|
|
?: ?=($~ dab)
|
2013-09-29 00:21:18 +04:00
|
|
|
~
|
|
|
|
=+ ^= vad
|
|
|
|
?+ -.q.n.dab !!
|
2015-12-04 18:16:34 +03:00
|
|
|
$ash ^$(gol %noun, gen p.q.n.dab)
|
|
|
|
$elm ~
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
?- dab
|
2015-12-04 18:16:34 +03:00
|
|
|
{* $~ $~} vad
|
|
|
|
{* $~ *} [vad $(dab r.dab)]
|
|
|
|
{* * $~} [vad $(dab l.dab)]
|
|
|
|
{* * *} [vad $(dab l.dab) $(dab r.dab)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
--
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
++ meet |=(ref+type &((nest | ref) (nest(sut ref) | sut)))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ nest
|
|
|
|
~/ %nest
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {tel+? ref+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
2015-12-04 18:16:34 +03:00
|
|
|
=| $: gem=(set {p+type q+type}) :: prune ref
|
|
|
|
gul=(set {p+type q+type}) :: assume match
|
|
|
|
meg=(set {p+type q+type}) :: prune sut
|
2014-09-05 04:24:27 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
=< dext
|
|
|
|
|%
|
|
|
|
++ cong
|
|
|
|
^- ?
|
2015-12-04 18:16:34 +03:00
|
|
|
?> ?&(?=({$core *} sut) ?=({$core *} ref))
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(q.sut q.ref)
|
|
|
|
dext(sut p.sut, ref p.ref)
|
|
|
|
?. ?& dext(sut q.q.sut, ref p.sut)
|
2013-12-09 01:23:03 +04:00
|
|
|
dext(sut p.sut, ref q.q.sut)
|
|
|
|
dext(sut q.q.ref, ref p.ref)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
|
|
|
|
|
?&
|
|
|
|
?|(=(p.q.sut p.q.ref) =(%gold p.q.ref))
|
|
|
|
::
|
2014-09-05 04:24:27 +04:00
|
|
|
?| (~(has in gul) [sut ref])
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ %= cram
|
2014-09-05 04:24:27 +04:00
|
|
|
gul (~(put in gul) [sut ref])
|
2013-09-29 00:21:18 +04:00
|
|
|
sut sut(p q.q.sut)
|
|
|
|
ref ref(p q.q.ref)
|
|
|
|
==
|
|
|
|
q.r.q.sut
|
|
|
|
q.r.q.ref
|
2013-12-09 01:23:03 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
?- p.q.sut
|
2015-12-04 18:16:34 +03:00
|
|
|
$gold
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ pac=[s=q.q.sut r=q.q.ref]
|
|
|
|
?& dext(sut s.pac, ref r.pac)
|
|
|
|
dext(sut r.pac, ref s.pac)
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$iron
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ sam=[s=(peek(sut q.q.sut) %rite 2) r=(peek(sut q.q.ref) %rite 2)]
|
|
|
|
dext(sut r.sam, ref s.sam)
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$lead &
|
|
|
|
$zinc
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ pal=[s=(peek(sut q.q.sut) %read 2) r=(peek(sut q.q.ref) %read 2)]
|
|
|
|
dext(sut s.pal, ref r.pal)
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ cram
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {dab+(map term foot) hem+(map term foot)}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
|
|
|
?- dab
|
2015-12-08 05:04:19 +03:00
|
|
|
$~ =(hem ~)
|
2013-09-29 00:21:18 +04:00
|
|
|
^
|
2013-12-09 01:23:03 +04:00
|
|
|
?& ?=(^ hem)
|
2013-09-29 00:21:18 +04:00
|
|
|
=(p.n.dab p.n.hem)
|
|
|
|
$(dab l.dab, hem l.hem)
|
|
|
|
$(dab r.dab, hem r.hem)
|
|
|
|
?- -.q.n.dab
|
2015-12-04 18:16:34 +03:00
|
|
|
$ash
|
|
|
|
?& ?=($ash -.q.n.hem)
|
2013-09-29 00:21:18 +04:00
|
|
|
dext(sut (play p.q.n.dab), ref (play(sut ref) p.q.n.hem))
|
|
|
|
==
|
2015-12-04 18:16:34 +03:00
|
|
|
$elm =(q.n.dab q.n.hem)
|
|
|
|
$oak ?=(?($oak $yew) -.q.n.hem)
|
|
|
|
$yew
|
|
|
|
?& ?=($yew -.q.n.hem)
|
2013-09-29 00:21:18 +04:00
|
|
|
$(dab p.q.n.dab, hem p.q.n.hem)
|
|
|
|
==
|
|
|
|
==
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2014-09-05 04:24:27 +04:00
|
|
|
++ dare
|
|
|
|
?& !(~(has in meg) [sut ref])
|
|
|
|
dext(tel |, meg (~(put in meg) [sut ref]))
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ dear
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
$void sint
|
|
|
|
$noun &
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *}
|
|
|
|
?. ?=({$atom *} ref)
|
2013-09-29 00:21:18 +04:00
|
|
|
sint
|
|
|
|
(fitz p.sut p.ref)
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cell *}
|
|
|
|
?. ?=({$cell *} ref)
|
2013-09-29 00:21:18 +04:00
|
|
|
sint
|
|
|
|
?&
|
|
|
|
dext(sut p.sut, ref p.ref)
|
|
|
|
dext(sut q.sut, ref q.ref)
|
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *}
|
|
|
|
?. ?=({$core *} ref)
|
2013-09-29 00:21:18 +04:00
|
|
|
sint
|
|
|
|
cong
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$cube *}
|
|
|
|
?: ?=({$cube *} ref)
|
2013-09-29 00:21:18 +04:00
|
|
|
=(p.sut p.ref)
|
|
|
|
sint
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bull *}
|
2014-04-07 21:16:57 +04:00
|
|
|
?& dext(sut q.sut)
|
2014-01-04 06:59:56 +04:00
|
|
|
dext(sut s.p.sut, ref (peek(sut ref) %free r.p.sut))
|
|
|
|
==
|
2015-12-04 18:16:34 +03:00
|
|
|
{$face *} dext(sut q.sut)
|
|
|
|
{$fork *}
|
|
|
|
?. ?=(?({$atom *} $noun {$cell *} {$cube *} {$core *}) ref)
|
2013-09-29 00:21:18 +04:00
|
|
|
sint
|
2014-09-05 04:24:27 +04:00
|
|
|
|(dare(sut p.sut) dare(sut q.sut))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$hold *} dext(sut repo)
|
2014-09-05 04:24:27 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ dext
|
|
|
|
^- ?
|
|
|
|
=- ?: tyn
|
|
|
|
&
|
|
|
|
?: tel
|
|
|
|
:: ~_ (dunk %need)
|
|
|
|
:: ~_ (dunk(sut ref) %have)
|
|
|
|
~|(%type-fail !!)
|
|
|
|
|
|
|
|
|
^= tyn
|
|
|
|
?: =(sut ref) &
|
|
|
|
dear
|
|
|
|
::
|
|
|
|
++ sext
|
|
|
|
?| (~(has in gem) [sut ref])
|
|
|
|
dext(gem (~(put in gem) [sut ref]))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ sint
|
|
|
|
^- ?
|
|
|
|
?- ref
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *} |
|
|
|
|
{$cell *} |
|
|
|
|
{$fork *} &(sext(ref p.ref) sext(ref q.ref))
|
|
|
|
{$hold *} dext(ref repo(sut ref))
|
|
|
|
$noun |
|
|
|
|
$void &
|
2013-09-29 00:21:18 +04:00
|
|
|
* dext(ref repo(sut ref))
|
|
|
|
==
|
|
|
|
--
|
|
|
|
::
|
|
|
|
++ park
|
|
|
|
~/ %park
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {way+?($read $rite $both $free) axe+axis}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- ?
|
2015-12-04 18:16:34 +03:00
|
|
|
?> ?=({$core *} sut)
|
2013-12-09 01:23:03 +04:00
|
|
|
?|
|
2013-09-29 00:21:18 +04:00
|
|
|
!vet
|
|
|
|
?- way
|
2015-12-04 18:16:34 +03:00
|
|
|
$both =(%gold p.q.sut)
|
|
|
|
$free &
|
|
|
|
$read
|
2013-09-29 00:21:18 +04:00
|
|
|
?- p.q.sut
|
2015-12-04 18:16:34 +03:00
|
|
|
$gold &
|
|
|
|
$iron |
|
|
|
|
$lead |
|
|
|
|
$zinc =(2 (cap axe))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$rite
|
2013-09-29 00:21:18 +04:00
|
|
|
?- p.q.sut
|
2015-12-04 18:16:34 +03:00
|
|
|
$gold &
|
|
|
|
$iron =(2 (cap axe))
|
|
|
|
$lead |
|
|
|
|
$zinc |
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ peek
|
|
|
|
~/ %peek
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {way+?($read $rite $both $free) axe+axis}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- type
|
|
|
|
?: =(1 axe)
|
|
|
|
sut
|
|
|
|
=+ [now=(cap axe) lat=(mas axe)]
|
|
|
|
=+ gil=*(set type)
|
|
|
|
|- ^- type
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
{$atom *} %void
|
|
|
|
{$cell *} ?:(=(2 now) ^$(sut p.sut, axe lat) ^$(sut q.sut, axe lat))
|
|
|
|
{$core *}
|
2013-12-09 01:23:03 +04:00
|
|
|
?: =(3 now)
|
2013-09-29 00:21:18 +04:00
|
|
|
?. (park way lat)
|
2014-01-05 02:57:44 +04:00
|
|
|
:: ~_ (dunk 'type')
|
|
|
|
~_ (show [%c 'axis'] [%d axe])
|
2013-09-29 00:21:18 +04:00
|
|
|
~|(%peek-park !!)
|
2013-12-09 01:23:03 +04:00
|
|
|
^$(sut p.sut, axe lat)
|
2013-09-29 00:21:18 +04:00
|
|
|
%noun
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$fork *} (fork $(sut p.sut) $(sut q.sut))
|
|
|
|
{$hold *}
|
2013-12-09 01:23:03 +04:00
|
|
|
?: (~(has in gil) sut)
|
|
|
|
%void
|
2013-09-29 00:21:18 +04:00
|
|
|
$(gil (~(put in gil) sut), sut repo)
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
$void %void
|
|
|
|
$noun %noun
|
2013-09-29 00:21:18 +04:00
|
|
|
* $(sut repo)
|
|
|
|
==
|
|
|
|
::
|
2013-12-09 01:23:03 +04:00
|
|
|
++ play
|
2013-09-29 00:21:18 +04:00
|
|
|
~/ %play
|
|
|
|
=> .(vet |)
|
2013-12-15 11:07:57 +04:00
|
|
|
|= gen=twig
|
2013-12-05 02:30:09 +04:00
|
|
|
^- type
|
2013-09-29 00:21:18 +04:00
|
|
|
?- gen
|
2015-12-04 18:16:34 +03:00
|
|
|
{^ *} (cell $(gen p.gen) $(gen q.gen))
|
|
|
|
{$bcpt *} $(gen (~(whip al q.gen) p:(seep %read p.gen)))
|
|
|
|
{$brcn *} (core sut %gold sut [[%0 0] p.gen])
|
|
|
|
{$cnts *} =+ lar=(foil (seek %read p.gen))
|
2013-12-15 12:23:23 +04:00
|
|
|
=+ mew=(snub q.gen)
|
|
|
|
=+ rag=q.q.lar
|
|
|
|
%- fire
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- (list {p+type q+foot})
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ mew
|
2013-12-15 12:23:23 +04:00
|
|
|
rag
|
|
|
|
$(mew t.mew, rag q:(tock p.i.mew ^$(gen q.i.mew) rag))
|
2015-12-04 18:16:34 +03:00
|
|
|
{$dtkt *} %noun
|
|
|
|
{$dtls *} [%atom %$]
|
|
|
|
{$dtzy *} ?:(=(%f p.gen) ?>((lte q.gen 1) bool) [%atom p.gen])
|
|
|
|
{$dtzz *} [%cube q.gen ?:(.?(q.gen) %noun [%atom p.gen])]
|
|
|
|
{$dttr *} %noun
|
|
|
|
{$dtts *} bool
|
|
|
|
{$dtwt *} bool
|
|
|
|
{$ktbr *} (wrap(sut $(gen p.gen)) %iron)
|
|
|
|
{$kthx *} $(gen p.gen)
|
|
|
|
{$ktls *} $(gen p.gen)
|
|
|
|
{$ktpm *} (wrap(sut $(gen p.gen)) %zinc)
|
|
|
|
{$ktsg *} $(gen p.gen)
|
|
|
|
{$ktts *} (conk(sut $(gen q.gen)) p.gen)
|
|
|
|
{$ktwt *} (wrap(sut $(gen p.gen)) %lead)
|
|
|
|
{$sgzp *} ~_(duck(sut ^$(gen p.gen)) $(gen q.gen))
|
|
|
|
{$sggr *} $(gen q.gen)
|
|
|
|
{$tsgr *} $(gen q.gen, sut $(gen p.gen))
|
|
|
|
{$tstr *} $(gen r.gen, sut (busk p.gen q.gen))
|
|
|
|
{$wtcl *} =+ [fex=(gain p.gen) wux=(lose p.gen)]
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ fork
|
|
|
|
?:(=(%void fex) %void $(sut fex, gen q.gen))
|
|
|
|
?:(=(%void wux) %void $(sut wux, gen r.gen))
|
2015-12-04 18:16:34 +03:00
|
|
|
{$zpcb *} ~_((show %o p.gen) $(gen q.gen))
|
|
|
|
{$zpcm *} (play p.gen)
|
|
|
|
{$zpcn *} p:seed
|
|
|
|
{$zpfs *} %void
|
|
|
|
{$zpsm *} (cell $(gen p.gen) $(gen q.gen))
|
|
|
|
{$zpts *} %noun
|
|
|
|
{$zpzp *} %void
|
2013-12-09 01:23:03 +04:00
|
|
|
* =+ doz=~(open ap gen)
|
2013-09-29 00:21:18 +04:00
|
|
|
?: =(doz gen)
|
2014-01-05 02:57:44 +04:00
|
|
|
~_ (show [%c 'hoon'] [%q gen])
|
2013-09-29 00:21:18 +04:00
|
|
|
~|(%play-open !!)
|
|
|
|
$(gen doz)
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ reco
|
2015-12-08 05:04:19 +03:00
|
|
|
|* fuy=__(|=(p+type p))
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ por=repo
|
|
|
|
=+ yot=(fuy por)
|
|
|
|
?: =(yot por)
|
|
|
|
?:(=(%void por) por sut)
|
|
|
|
yot
|
|
|
|
::
|
|
|
|
++ repo
|
|
|
|
^- type
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
{$bull *} q.sut
|
|
|
|
{$core *} [%cell %noun p.sut]
|
|
|
|
{$cube *} q.sut
|
|
|
|
{$face *} q.sut
|
|
|
|
{$hold *} (rest p.sut)
|
|
|
|
$noun [%fork [%atom %$] [%cell %noun %noun]]
|
2013-09-29 00:21:18 +04:00
|
|
|
* ~|(%repo-fltt !!)
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ rest
|
|
|
|
~/ %rest
|
2015-12-04 18:16:34 +03:00
|
|
|
|= leg+(list {p+type q+twig})
|
2013-09-29 00:21:18 +04:00
|
|
|
^- type
|
2015-12-04 18:16:34 +03:00
|
|
|
?: (lien leg |=({p+type q+twig} (~(has in fan) [p q])))
|
2013-09-29 00:21:18 +04:00
|
|
|
~|(%rest-loop !!)
|
|
|
|
=> .(fan (~(gas in fan) leg))
|
|
|
|
%+ roll
|
2013-12-09 01:23:03 +04:00
|
|
|
%- %~ tap
|
|
|
|
in
|
2013-09-29 00:21:18 +04:00
|
|
|
%- ~(gas in *(set type))
|
2015-12-04 18:16:34 +03:00
|
|
|
(turn leg |=({p+type q+twig} (play(sut p) q)))
|
2013-09-29 00:21:18 +04:00
|
|
|
~
|
|
|
|
=+([p=*type q=`type`%void] |.((fork p q)))
|
|
|
|
::
|
|
|
|
++ seek
|
|
|
|
~/ %seek
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {way+?($read $rite $both $free) hyp+wing}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- port
|
2013-12-26 21:12:07 +04:00
|
|
|
?~ hyp
|
2013-09-29 00:21:18 +04:00
|
|
|
[1 %& sut]
|
|
|
|
=> .(i.hyp ?^(i.hyp i.hyp [%| p=0 q=i.hyp]))
|
|
|
|
=+ zar=$(hyp t.hyp)
|
|
|
|
=+ ^= syp
|
2015-12-08 05:04:19 +03:00
|
|
|
?- -.q.zar
|
|
|
|
{$&} p.q.zar
|
|
|
|
{$|} (fire (turn q.q.zar |=({p+type q+foot} [p [%ash ~ 1]])))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
?- i.hyp
|
2015-12-04 18:16:34 +03:00
|
|
|
{$& *}
|
2013-09-29 00:21:18 +04:00
|
|
|
[(peg p.zar p.i.hyp) %& (peek(sut syp) way p.i.hyp)]
|
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$| *}
|
2013-09-29 00:21:18 +04:00
|
|
|
=> .(sut syp)
|
|
|
|
=+ hud=(fink p.i.hyp way q.i.hyp)
|
|
|
|
[(peg p.zar p.hud) q.hud]
|
|
|
|
==
|
|
|
|
::
|
2013-12-23 03:32:30 +04:00
|
|
|
++ seep
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {way+?($read $rite $both $free) hyp+wing}
|
|
|
|
^- {p+axis q+type}
|
2013-12-23 03:32:30 +04:00
|
|
|
=+ zar=(seek way hyp)
|
2013-12-26 21:12:07 +04:00
|
|
|
?>(?=(& -.q.zar) [p.zar p.q.zar])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-01-05 06:05:33 +04:00
|
|
|
++ sift
|
2015-12-04 18:16:34 +03:00
|
|
|
|= ref+type
|
2014-01-27 22:49:26 +04:00
|
|
|
~+
|
2014-01-05 06:05:33 +04:00
|
|
|
^- type
|
2015-07-17 21:55:32 +03:00
|
|
|
!!
|
|
|
|
:: ~|(%sift-lose ?>((nest(sut ref) & -:!>(*typo)) ref))
|
2014-01-05 06:05:33 +04:00
|
|
|
::
|
2013-12-15 12:23:23 +04:00
|
|
|
++ snub
|
2013-12-17 08:48:40 +04:00
|
|
|
~/ %snub
|
2015-12-04 18:16:34 +03:00
|
|
|
|= har+(list {p+wing q+twig})
|
|
|
|
^- (list {p+wing q+twig})
|
2015-12-08 04:46:28 +03:00
|
|
|
(turn har |=({a+wing b+twig} [(flop a) b]))
|
2013-12-15 12:23:23 +04:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ tack
|
|
|
|
~/ %tack
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {peh+wing mur+type}
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ axe=1
|
2015-12-04 18:16:34 +03:00
|
|
|
|- ^- {p+axis q+type}
|
2013-12-31 23:30:37 +04:00
|
|
|
?~ peh
|
2013-09-29 00:21:18 +04:00
|
|
|
[axe mur]
|
|
|
|
=> .(i.peh ?^(i.peh i.peh [%| p=0 q=i.peh]))
|
|
|
|
?- i.peh
|
2015-12-04 18:16:34 +03:00
|
|
|
{$& *}
|
2014-04-03 05:06:45 +04:00
|
|
|
=+ ^= sap ^- (unit term)
|
2015-12-04 18:16:34 +03:00
|
|
|
?.(&(=(1 p.i.peh) ?=({$face *} sut)) ~ [~ p.sut])
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vas=(peek %rite p.i.peh)
|
|
|
|
=+ gav=$(peh t.peh, sut vas, axe (peg axe p.i.peh))
|
2014-04-03 05:06:45 +04:00
|
|
|
=+ heh=(heal ~ p.i.peh q.gav)
|
|
|
|
[p.gav ?~(sap heh (face u.sap heh))]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 18:16:34 +03:00
|
|
|
{$| *}
|
2014-02-11 09:34:24 +04:00
|
|
|
=+ dob=`post`(need q:(fino p.i.peh %rite q.i.peh))
|
|
|
|
~| [%tack-limb q.i.peh]
|
2015-12-08 04:23:27 +03:00
|
|
|
?: ?=($2 -.q.dob)
|
2014-02-11 09:34:24 +04:00
|
|
|
=+ hoc=(peg axe p.dob)
|
|
|
|
=+ guh=$(peh t.peh, sut s.p.q.dob, axe (peg hoc r.p.q.dob))
|
|
|
|
=+ zig=$(peh q.p.q.dob, sut q.q.dob, mur q.guh)
|
|
|
|
=+ zug=(heal [~ q.i.peh] p.dob (busk(sut q.zig) p.p.q.dob q.p.q.dob))
|
|
|
|
[p.guh zug]
|
|
|
|
=+ wuf=(flay (flee dob))
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ gav=$(peh t.peh, sut q.wuf, axe (peg axe p.wuf))
|
|
|
|
[p.gav (heal [~ q.i.peh] p.wuf q.gav)]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ tock
|
|
|
|
~/ %tock
|
2015-12-04 18:16:34 +03:00
|
|
|
|= {peh+wing mur+type men+(list {p+type q+foot})}
|
|
|
|
^- {p+axis q+(list {p+type q+foot})}
|
2013-09-29 00:21:18 +04:00
|
|
|
=- [(need p.wib) q.wib]
|
|
|
|
^= wib
|
2015-12-08 04:23:27 +03:00
|
|
|
|- ^- {p+(unit axis) q+(list {p+type q+foot})}
|
2014-06-07 05:09:44 +04:00
|
|
|
?~ men
|
2013-09-29 00:21:18 +04:00
|
|
|
[*(unit axis) ~]
|
|
|
|
=+ geq=(tack(sut p.i.men) peh mur)
|
|
|
|
=+ mox=$(men t.men)
|
|
|
|
[(mate p.mox `_p.mox`[~ p.geq]) [[q.geq q.i.men] q.mox]]
|
|
|
|
::
|
|
|
|
++ wrap
|
|
|
|
~/ %wrap
|
2015-12-04 18:16:34 +03:00
|
|
|
|= yoz+?($lead $iron $zinc)
|
2013-09-29 00:21:18 +04:00
|
|
|
^- type
|
|
|
|
?- sut
|
2015-12-04 18:16:34 +03:00
|
|
|
{$core *} ?.(=(%gold p.q.sut) ~|(%wrap-metl !!) sut(p.q yoz))
|
|
|
|
{$fork *} (fork $(sut p.sut) $(sut q.sut))
|
|
|
|
{$hold *} $(sut repo)
|
2013-09-29 00:21:18 +04:00
|
|
|
* ~|(%wrap-type !!)
|
|
|
|
==
|
|
|
|
--
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 2fD, grammar ::
|
|
|
|
::
|
|
|
|
++ vang
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {bug+? wer+path}
|
2013-09-29 00:21:18 +04:00
|
|
|
%*(. vast bug bug, wer wer)
|
|
|
|
::
|
|
|
|
++ vast
|
|
|
|
=+ [bug=`?`| was=*(set path) wer=*path]
|
2013-12-09 01:23:03 +04:00
|
|
|
|%
|
2013-09-29 00:21:18 +04:00
|
|
|
++ gash %+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|= a+(list tyke) ^- tyke
|
2013-09-29 00:21:18 +04:00
|
|
|
?~(a ~ (weld i.a $(a t.a)))
|
|
|
|
(more fas gasp)
|
|
|
|
++ gasp ;~ pose
|
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|=({a+tyke b+tyke c+tyke} :(weld a b c))
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ plug
|
2015-12-04 22:32:49 +03:00
|
|
|
(cook |=(a+(list) (turn a |=(b+* ~))) (star tis))
|
|
|
|
(cook |=(a+twig [[~ a] ~]) hasp)
|
|
|
|
(cook |=(a+(list) (turn a |=(b+* ~))) (star tis))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2015-12-04 22:32:49 +03:00
|
|
|
(cook |=(a+(list) (turn a |=(b+* ~))) (plus tis))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
++ glam ~+((glue ace))
|
|
|
|
++ hasp ;~ pose
|
|
|
|
(ifix [sel ser] wide)
|
2013-12-09 01:23:03 +04:00
|
|
|
(stag %cnhp (ifix [pel per] (most ace wide)))
|
2014-11-01 02:45:09 +03:00
|
|
|
(stag %dtzy (stag %t qut))
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|=(a+coin [%dtzy ?:(?=({$~ $tas *} a) %tas %ta) ~(rent co a)])
|
2013-09-29 00:21:18 +04:00
|
|
|
nuck:so
|
|
|
|
==
|
|
|
|
++ mota %+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|=({a+tape b+tape} (rap 3 (weld a b)))
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(plug (star low) (star hig))
|
|
|
|
::
|
|
|
|
++ plex
|
2014-09-11 00:00:23 +04:00
|
|
|
|= gen=twig ^- (unit path)
|
2015-12-04 22:32:49 +03:00
|
|
|
?: ?=({$zpcb *} gen)
|
2013-09-29 00:21:18 +04:00
|
|
|
$(gen q.gen)
|
2015-12-04 22:32:49 +03:00
|
|
|
?. ?=({$clsg *} gen) ~
|
2014-09-11 00:00:23 +04:00
|
|
|
%+ reel p.gen
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {a+twig b+__(`(unit path)`[~ u=/])}
|
2014-09-11 00:00:23 +04:00
|
|
|
?~ b ~
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=($dtzy -.a) ~
|
2014-09-11 00:00:23 +04:00
|
|
|
`[q.a u.b]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ pray
|
2015-12-04 22:32:49 +03:00
|
|
|
|= gen+twig ~| %pray ^- (unit twig)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ rev=(plex gen)
|
2014-09-11 00:00:23 +04:00
|
|
|
?~ rev ~
|
|
|
|
:- ~
|
|
|
|
?: (~(has in was) u.rev)
|
2013-09-29 00:21:18 +04:00
|
|
|
~|(%pray-loop !!)
|
2014-09-11 00:00:23 +04:00
|
|
|
=+ ruv=`path`(weld u.rev `path`[%hoon ~])
|
2015-04-04 13:54:25 +03:00
|
|
|
~& [%pray-disabled ruv]
|
|
|
|
!!
|
2015-12-08 04:23:27 +03:00
|
|
|
:: =+ txt=(@ta .^(%cx ruv))
|
2015-04-04 13:54:25 +03:00
|
|
|
:: ~| ruv
|
|
|
|
:: %+ rash txt
|
|
|
|
:: (ifix [gay gay] tall(was (~(put in was) u.rev), wer u.rev, bug |))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ prey
|
2015-12-04 22:32:49 +03:00
|
|
|
|= gun+(list twig) ^- (unit twig)
|
2014-09-11 00:00:23 +04:00
|
|
|
?~ gun `[~ 1]
|
|
|
|
=+ gup=(pray i.gun)
|
|
|
|
?~ gup ~
|
|
|
|
?~ t.gun gup
|
2015-12-04 22:32:49 +03:00
|
|
|
(bind $(gun t.gun) |=(a+twig [%tsgr u.gup a]))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ phax
|
2015-12-04 22:32:49 +03:00
|
|
|
|= ruw+(list (list beer))
|
|
|
|
=+ [yun=*(list twig) cah=*(list @)]
|
|
|
|
=+ wod=|=({a+tape b+(list twig)} ^+(b ?~(a b [[%clfs %smdq (flop a)] b])))
|
2013-09-29 00:21:18 +04:00
|
|
|
|- ^+ yun
|
2013-12-09 01:23:03 +04:00
|
|
|
?~ ruw
|
2013-09-29 00:21:18 +04:00
|
|
|
(flop (wod cah yun))
|
|
|
|
?~ i.ruw $(ruw t.ruw)
|
|
|
|
?@ i.i.ruw
|
|
|
|
$(i.ruw t.i.ruw, cah [i.i.ruw cah])
|
|
|
|
$(i.ruw t.i.ruw, cah ~, yun [p.i.i.ruw (wod cah yun)])
|
|
|
|
::
|
2015-10-27 01:26:49 +03:00
|
|
|
++ posh !:
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {pre+(unit tyke) pof+(unit {p+@ud q+tyke})}
|
2015-05-22 01:56:14 +03:00
|
|
|
^- (unit (list twig))
|
|
|
|
=- ?^(- - ~&(%posh-fail -))
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ wom=(poof wer)
|
2015-05-22 01:56:14 +03:00
|
|
|
%+ biff
|
|
|
|
?~ pre `u=wom
|
|
|
|
%+ bind (poon wom u.pre)
|
|
|
|
|= moz=(list twig)
|
|
|
|
?~(pof moz (weld moz (slag (lent u.pre) wom)))
|
|
|
|
|= yez=(list twig)
|
|
|
|
?~ pof `yez
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ zey=(flop yez)
|
|
|
|
=+ [moz=(scag p.u.pof zey) gul=(slag p.u.pof zey)]
|
2015-05-22 01:56:14 +03:00
|
|
|
=+ zom=(poon (flop moz) q.u.pof)
|
|
|
|
?~(zom ~ `(weld (flop gul) u.zom))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2015-12-04 22:32:49 +03:00
|
|
|
++ poof |=(pax=path ^-(tusk (turn pax |=(a+@ta [%dtzy %ta a]))))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ poon
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {pag+tusk goo+tyke}
|
2015-05-22 01:56:14 +03:00
|
|
|
^- (unit tusk)
|
|
|
|
?~ goo `~
|
|
|
|
%+ both
|
2015-06-12 20:56:30 +03:00
|
|
|
?^(i.goo i.goo ?~(pag ~ `u=i.pag))
|
2013-09-29 00:21:18 +04:00
|
|
|
$(goo t.goo, pag ?~(pag ~ t.pag))
|
|
|
|
::
|
|
|
|
++ poor
|
2015-05-22 01:56:14 +03:00
|
|
|
%+ sear posh
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ plug
|
2013-12-09 01:23:03 +04:00
|
|
|
(stag ~ gash)
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(pose (stag ~ ;~(pfix cen porc)) (easy ~))
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ porc
|
|
|
|
;~ plug
|
2015-12-05 02:59:29 +03:00
|
|
|
(cook |=(a+(list) (lent a)) (star cen))
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(pfix fas gash)
|
|
|
|
==
|
|
|
|
::
|
2014-03-26 04:48:22 +04:00
|
|
|
++ rump
|
|
|
|
%+ sear
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {a+wing b+(unit twig)} ^- (unit twig)
|
2015-12-08 04:46:28 +03:00
|
|
|
?~(b [~ %cnzz a] ?.(?=({@ $~} a) ~ [~ [%dtzz %tas i.a] u.b]))
|
2014-03-26 04:48:22 +04:00
|
|
|
;~(plug rope ;~(pose (stag ~ ;~(pfix fas wide)) (easy ~)))
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ rood
|
|
|
|
;~ pfix fas
|
|
|
|
(stag %clsg poor)
|
|
|
|
==
|
2014-03-26 04:48:22 +04:00
|
|
|
::
|
|
|
|
++ rupl
|
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {a+? b+(list twig) c+?}
|
2014-03-26 04:48:22 +04:00
|
|
|
?: a
|
|
|
|
?: c
|
|
|
|
[%clsg [%clsg b] ~]
|
|
|
|
[%clsg b]
|
|
|
|
?: c
|
|
|
|
[%clsg [%cltr b] ~]
|
|
|
|
[%cltr b]
|
|
|
|
;~ plug
|
|
|
|
;~ pose
|
|
|
|
(cold | (just '['))
|
|
|
|
(cold & (jest '~['))
|
|
|
|
==
|
|
|
|
::
|
|
|
|
;~ pose
|
|
|
|
(ifix [ace gap] (most gap tall))
|
|
|
|
(most ace wide)
|
|
|
|
==
|
|
|
|
::
|
|
|
|
;~ pose
|
|
|
|
(cold & (jest ']~'))
|
|
|
|
(cold | (just ']'))
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2014-04-17 07:15:49 +04:00
|
|
|
++ sail :: template language
|
2015-12-04 22:32:49 +03:00
|
|
|
|= tol+? =| lin+?
|
2014-04-03 05:06:45 +04:00
|
|
|
|%
|
|
|
|
++ ape :: product twig
|
|
|
|
%- cook
|
|
|
|
:_ amp
|
2015-12-04 22:32:49 +03:00
|
|
|
|= tum+tuna ^- twig
|
2015-12-08 04:23:27 +03:00
|
|
|
?: ?=({$e *} tum)
|
2014-04-06 01:25:16 +04:00
|
|
|
[p.tum (sag q.tum)]
|
|
|
|
(sag tum ~)
|
2014-04-03 05:06:45 +04:00
|
|
|
::
|
|
|
|
++ amp :: entry point
|
|
|
|
;~(pfix sem ?:(tol bam bat))
|
|
|
|
::
|
|
|
|
++ bam :: tall top
|
|
|
|
%+ knee *tuna |. ~+
|
|
|
|
;~ pose
|
2014-04-06 01:25:16 +04:00
|
|
|
(stag %f ;~(pfix (plus ace) (cook rab puv)))
|
2014-04-05 23:04:05 +04:00
|
|
|
(stag %e ;~(plug hag nal))
|
2014-04-06 01:25:16 +04:00
|
|
|
(stag %e hul)
|
2014-04-05 02:35:59 +04:00
|
|
|
(stag %f nup)
|
2014-04-03 05:06:45 +04:00
|
|
|
;~(pfix tis (stag %f nol))
|
|
|
|
;~(pfix hep (stag %a ;~(pfix gap tall)))
|
|
|
|
;~(pfix lus (stag %b ;~(pfix gap tall)))
|
|
|
|
;~(pfix tar (stag %c ;~(pfix gap tall)))
|
|
|
|
;~(pfix cen (stag %d ;~(pfix gap tall)))
|
2014-04-09 02:26:01 +04:00
|
|
|
(easy [%f [%a [%smdq 10 ~]] ~])
|
2014-04-03 05:06:45 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ bat :: wide outer top
|
|
|
|
%+ knee *tuna |. ~+
|
|
|
|
;~ pose
|
|
|
|
(stag %f nup)
|
|
|
|
(stag %f ped)
|
2014-04-06 01:25:16 +04:00
|
|
|
(stag %e ;~(plug hig lif))
|
2014-04-03 05:06:45 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ bet :: wide inner top
|
|
|
|
%+ knee *tuna |. ~+
|
|
|
|
;~ pose
|
|
|
|
bat
|
|
|
|
;~(pfix hep (stag %a wide))
|
|
|
|
;~(pfix lus (stag %b wide))
|
|
|
|
;~(pfix tar (stag %c wide))
|
|
|
|
;~(pfix cen (stag %d wide))
|
|
|
|
==
|
|
|
|
::
|
|
|
|
++ fry :: mane as twig
|
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {a+@tas b+(unit @tas)}
|
2014-04-07 21:16:57 +04:00
|
|
|
?~ b
|
2014-04-03 05:06:45 +04:00
|
|
|
[%dtzz %tas a]
|
|
|
|
[[%dtzz %tas a] [%dtzz %tas u.b]]
|
2014-04-05 02:35:59 +04:00
|
|
|
;~(plug sym ;~(pose (stag ~ ;~(pfix cab sym)) (easy ~)))
|
2014-04-03 05:06:45 +04:00
|
|
|
::
|
2014-04-05 23:04:05 +04:00
|
|
|
++ hag :: script or style
|
2015-12-04 22:32:49 +03:00
|
|
|
%+ cook |=(a+twig a)
|
2014-04-05 23:04:05 +04:00
|
|
|
;~ plug
|
|
|
|
(stag %dtzz (stag %tas ;~(pose (jest %script) (jest %style))))
|
|
|
|
(stag %clsg jaw)
|
|
|
|
==
|
|
|
|
::
|
2014-04-06 01:25:16 +04:00
|
|
|
++ hig :: simple head
|
2015-12-04 22:32:49 +03:00
|
|
|
(cook |=({a+twig b=(list twig)} [a %clsg b]) hog)
|
2014-04-06 01:25:16 +04:00
|
|
|
::
|
|
|
|
++ hog :: tag head
|
2014-04-05 02:35:59 +04:00
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|= hug
|
|
|
|
^- {twig (list twig)}
|
2014-12-10 00:52:43 +03:00
|
|
|
=- [a (welp - ?~(c d [[[%dtzz %tas p.c] q.c] d]))]
|
|
|
|
=- (~(tap by -))
|
2015-12-04 22:32:49 +03:00
|
|
|
%. |=(e+(list tank) [%smdq ~(ram re %rose [" " `~] e)])
|
2014-12-10 00:52:43 +03:00
|
|
|
=< ~(run by f:(reel b .))
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {e+{p+term q+term} f+(jar twig tank)}
|
2014-12-10 00:52:43 +03:00
|
|
|
(~(add ja f) [[%dtzz %tas p.e] [%leaf (trip q.e)]])
|
2014-04-05 02:35:59 +04:00
|
|
|
;~ plug
|
|
|
|
fry
|
2014-12-10 00:52:43 +03:00
|
|
|
=- (star ;~(plug - sym))
|
|
|
|
;~(pose (cold %class dot) (cold %id hax))
|
|
|
|
=- ;~(pose ;~(plug - (stag %smdq soil)) (easy ~))
|
|
|
|
;~(pose (cold %href fas) (cold %src pat))
|
2014-04-05 02:35:59 +04:00
|
|
|
;~ pose
|
|
|
|
%+ ifix [pel per]
|
|
|
|
%+ more ;~(plug com ace)
|
|
|
|
;~(plug fry ;~(pfix ace wide))
|
|
|
|
::
|
|
|
|
(easy ~)
|
|
|
|
==
|
|
|
|
==
|
2014-04-09 02:26:01 +04:00
|
|
|
::
|
|
|
|
++ hoy :: tall attributes
|
|
|
|
%- star
|
|
|
|
;~ pfix ;~(plug gap tis)
|
2014-06-17 15:17:01 +04:00
|
|
|
;~(plug fry ;~(pfix gap tall))
|
2014-04-09 02:26:01 +04:00
|
|
|
==
|
|
|
|
::
|
2015-12-04 22:32:49 +03:00
|
|
|
++ hug :: head shape
|
|
|
|
_: a+twig :: XX translation
|
|
|
|
b+(list {@tas @tas})
|
|
|
|
c+_|($~ {p+@tas q+twig})
|
|
|
|
d=(list twig)
|
|
|
|
==
|
|
|
|
::
|
2014-04-06 01:25:16 +04:00
|
|
|
++ hul :: tall preface
|
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {a+{p+twig q+(list twig)} b+(list twig) c+(list tuna)}
|
2015-12-08 04:46:28 +03:00
|
|
|
^- {twig (list tuna)}
|
2014-04-06 01:25:16 +04:00
|
|
|
[[p.a %clsg (weld q.a b)] c]
|
2014-04-09 02:26:01 +04:00
|
|
|
;~(plug hog hoy nol)
|
2014-04-03 05:06:45 +04:00
|
|
|
::
|
2014-04-05 23:04:05 +04:00
|
|
|
++ jaw :: wide attributes
|
|
|
|
;~ pose
|
|
|
|
%+ ifix [pel per]
|
|
|
|
%+ more ;~(plug com ace)
|
|
|
|
;~(plug fry ;~(pfix ace wide))
|
|
|
|
::
|
|
|
|
(easy ~)
|
|
|
|
==
|
|
|
|
::
|
2014-04-03 05:06:45 +04:00
|
|
|
++ lif :: wide elements
|
2015-12-04 22:32:49 +03:00
|
|
|
%+ cook |=(a+(list tuna) a)
|
2014-04-05 02:35:59 +04:00
|
|
|
;~(pose ;~(pfix col pep) (cold ~ sem) (easy ~))
|
2014-04-03 05:06:45 +04:00
|
|
|
::
|
|
|
|
++ luf :: wide elements
|
2015-12-04 22:32:49 +03:00
|
|
|
%+ cook |=(a+(list tuna) a)
|
2014-04-03 05:06:45 +04:00
|
|
|
(star ;~(pfix ace bet))
|
|
|
|
::
|
2014-04-05 23:04:05 +04:00
|
|
|
++ nal :: unescaped tall tail
|
2015-12-04 22:32:49 +03:00
|
|
|
%+ cook |=(a+(list tuna) a)
|
2014-04-05 23:04:05 +04:00
|
|
|
%+ ifix [gap ;~(plug gap duz)]
|
|
|
|
%+ most gap
|
2014-04-14 22:01:18 +04:00
|
|
|
;~ pfix sem
|
|
|
|
;~ pose
|
|
|
|
;~ pfix ace
|
|
|
|
%+ cook
|
|
|
|
|= a=tape
|
|
|
|
[%a %smdq (weld a `tape`[`@`10 ~])]
|
|
|
|
(star (shim 32 255))
|
|
|
|
==
|
|
|
|
(easy [%a %smdq `@`10 ~])
|
|
|
|
==
|
2014-04-09 02:26:01 +04:00
|
|
|
==
|
2014-04-05 23:04:05 +04:00
|
|
|
::
|
2014-04-03 05:06:45 +04:00
|
|
|
++ nol :: tall tail
|
|
|
|
?> tol
|
2015-12-04 22:32:49 +03:00
|
|
|
%+ cook |=(a+(list tuna) a)
|
2014-04-03 05:06:45 +04:00
|
|
|
;~ pose
|
|
|
|
(cold ~ sem)
|
2014-04-05 02:35:59 +04:00
|
|
|
;~(pfix col pep(tol |))
|
2014-04-06 01:25:16 +04:00
|
|
|
;~(pfix ;~(plug col ace) (cook rab(tol |) puv))
|
2014-04-05 23:04:05 +04:00
|
|
|
(ifix [gap ;~(plug gap duz)] (most gap amp))
|
2014-04-03 05:06:45 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ nup :: wide quote
|
2015-12-04 22:32:49 +03:00
|
|
|
%+ cook |=(a+(list tuna) a)
|
2014-06-20 03:11:17 +04:00
|
|
|
;~ pose
|
|
|
|
;~(less (jest '"""') (ifix [doq doq] (cook rab puv)))
|
|
|
|
(inde (ifix [(jest '"""\0a') (jest '\0a"""')] (cook rab puv(lin |))))
|
|
|
|
==
|
2014-04-03 05:06:45 +04:00
|
|
|
::
|
2014-04-06 01:25:16 +04:00
|
|
|
++ pab (ifix [kel ker] ;~(plug hig luf)) :: bracketed element
|
|
|
|
++ ped :: wide flow
|
2015-12-04 22:32:49 +03:00
|
|
|
%+ cook |=(a+(list tuna) a)
|
2014-04-03 05:06:45 +04:00
|
|
|
(ifix [pel per] (more ace bet))
|
|
|
|
::
|
|
|
|
++ pep :: wrapped tuna
|
2015-12-04 22:32:49 +03:00
|
|
|
%+ cook |=(a+(list tuna) a)
|
2014-04-03 05:06:45 +04:00
|
|
|
;~ pose
|
|
|
|
ped
|
|
|
|
(ifix [pel per] (more ace bet))
|
2014-06-19 07:30:43 +04:00
|
|
|
(cook |=(@t [%a %smdq (trip +<)]~) qut)
|
2014-04-03 05:06:45 +04:00
|
|
|
;~ plug
|
|
|
|
bat
|
|
|
|
(easy ~)
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2014-04-06 01:25:16 +04:00
|
|
|
++ puv :: wide/tall flow
|
2015-12-04 22:32:49 +03:00
|
|
|
%+ cook |=(a+(list beet) a)
|
2014-04-03 05:06:45 +04:00
|
|
|
%- star
|
|
|
|
;~ pose
|
2014-06-20 03:11:17 +04:00
|
|
|
;~(pfix bas ;~(pose (mask "-+*%;\{") bas doq bix:ab))
|
2014-04-06 01:25:16 +04:00
|
|
|
;~(pfix hep (stag %a sump))
|
|
|
|
;~(pfix lus (stag %b sump))
|
|
|
|
;~(pfix tar (stag %c sump))
|
|
|
|
;~(pfix cen (stag %d sump))
|
|
|
|
;~(pfix sem (stag %e pab(tol |)))
|
2014-06-20 03:11:17 +04:00
|
|
|
;~(less bas kel ?:(tol fail doq) prn)
|
|
|
|
?:(lin fail ;~(less (jest '\0a"""') (just '\0a')))
|
2014-04-06 01:25:16 +04:00
|
|
|
(stag %a sump)
|
2014-04-03 05:06:45 +04:00
|
|
|
==
|
|
|
|
::
|
2014-04-06 01:25:16 +04:00
|
|
|
++ rab :: beet to tuna
|
|
|
|
|= reb=(list beet)
|
|
|
|
^- (list tuna)
|
2015-12-08 04:46:28 +03:00
|
|
|
=| {sim+(list @) tuz+(list tuna)}
|
2014-04-06 01:25:16 +04:00
|
|
|
|- ^- (list tuna)
|
|
|
|
?~ reb
|
2014-04-09 04:34:29 +04:00
|
|
|
=. sim
|
|
|
|
?. tol sim
|
2014-04-09 02:26:01 +04:00
|
|
|
[10 |-(?~(sim sim ?:(=(32 i.sim) $(sim t.sim) sim)))]
|
2014-04-06 01:25:16 +04:00
|
|
|
?~(sim tuz [[%a %smdq (flop sim)] tuz])
|
|
|
|
?@ i.reb
|
|
|
|
$(reb t.reb, sim [i.reb sim])
|
|
|
|
=+ zut=$(reb t.reb, sim ~)
|
|
|
|
?~ sim [i.reb zut]
|
|
|
|
[[%a %smdq (flop sim)] i.reb zut]
|
|
|
|
::
|
|
|
|
++ sag :: tuna to twig
|
2015-12-04 22:32:49 +03:00
|
|
|
|= lut+(list tuna)
|
2014-04-06 01:25:16 +04:00
|
|
|
^- twig
|
|
|
|
:- %cltr
|
|
|
|
|- ^- (list twig)
|
|
|
|
?~ lut [[%dtzz %n ~] ~]
|
|
|
|
?- -.i.lut
|
2015-12-04 22:32:49 +03:00
|
|
|
$a [[%clfs p.i.lut] $(lut t.lut)]
|
|
|
|
$b [p.i.lut $(lut t.lut)]
|
|
|
|
$c :_ ~
|
2014-04-06 01:25:16 +04:00
|
|
|
:+ %cndt `twig`[p.i.lut [%cltr $(lut t.lut)]]
|
|
|
|
:+ %tsbr `tile`[[%axil %noun] [%axil %noun]]
|
|
|
|
:- %brcn
|
|
|
|
^- (map term foot)
|
|
|
|
:_ [~ ~]
|
|
|
|
=+ sug=[[%& 12] ~]
|
|
|
|
:+ %$ %elm
|
|
|
|
:^ %wtsg sug
|
|
|
|
[%cnts sug [[[[%& 1] ~] [~ 13]] ~]]
|
|
|
|
[%cnts sug [[[[%& 3] ~] [%cnts [%$ ~] [[sug [~ 25]] ~]]] ~]]
|
2015-12-04 22:32:49 +03:00
|
|
|
$d [[%cnhp p.i.lut [%cltr $(lut t.lut)] ~] ~]
|
|
|
|
$e [[p.i.lut ^$(lut [[%f q.i.lut] ~])] $(lut t.lut)]
|
|
|
|
$f $(lut (weld p.i.lut t.lut))
|
2014-04-06 01:25:16 +04:00
|
|
|
==
|
2014-04-03 05:06:45 +04:00
|
|
|
--
|
|
|
|
::
|
2015-10-27 01:26:49 +03:00
|
|
|
++ scat !:
|
2013-12-15 11:07:57 +04:00
|
|
|
%+ knee *twig |. ~+
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
2013-12-21 06:35:33 +04:00
|
|
|
:~
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '!'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
|
|
|
(stag %wtzp ;~(pfix zap wide))
|
|
|
|
(stag %zpzp (cold ~ ;~(plug zap zap)))
|
2015-02-08 10:40:09 +03:00
|
|
|
:: (stag %zpcn (cold ~ ;~(plug zap cen)))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '$'
|
2015-11-30 16:23:47 +03:00
|
|
|
;~ pose
|
|
|
|
;~ pfix buc
|
|
|
|
;~ pose
|
|
|
|
(stag %cbzy (stag %tas (cold %$ buc)))
|
|
|
|
(stag %cbzy (stag %f (cold & pam)))
|
|
|
|
(stag %cbzy (stag %f (cold | bar)))
|
|
|
|
(stag %cbzy (stag %t qut))
|
2015-12-08 04:23:27 +03:00
|
|
|
(stag %cbzy (sear |=(a+coin ?:(?=($$ -.a) (some +.a) ~)) nuck:so))
|
2015-11-30 16:23:47 +03:00
|
|
|
==
|
|
|
|
==
|
|
|
|
rump
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '%'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix cen
|
|
|
|
;~ pose
|
2015-12-04 22:32:49 +03:00
|
|
|
(stag %clsg (sear |+({a+@ud b+tyke} (posh ~ ~ a b)) porc))
|
2014-01-05 07:56:33 +04:00
|
|
|
(stag %dtzz (stag %tas (cold %$ buc)))
|
|
|
|
(stag %dtzz (stag %f (cold & pam)))
|
|
|
|
(stag %dtzz (stag %f (cold | bar)))
|
2014-11-01 02:45:09 +03:00
|
|
|
(stag %dtzz (stag %t qut))
|
2013-09-29 00:21:18 +04:00
|
|
|
(cook (jock &) nuck:so)
|
2015-12-04 22:32:49 +03:00
|
|
|
(stag %clsg (sear |=(a+(list) (posh ~ ~ (lent a) ~)) (star cen)))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2013-12-09 01:23:03 +04:00
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '&'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
2015-12-04 22:32:49 +03:00
|
|
|
(cook |=(a+wing [%cnts a ~]) rope)
|
2013-09-29 00:21:18 +04:00
|
|
|
(stag %wtpm ;~(pfix pam (ifix [pel per] (most ace wide))))
|
2015-05-22 08:30:08 +03:00
|
|
|
;~(plug (stag %dtzz (stag %f (cold & pam))) ;~(pfix fas wide))
|
2014-01-05 07:56:33 +04:00
|
|
|
(stag %dtzy (stag %f (cold & pam)))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '\''
|
2014-01-05 07:56:33 +04:00
|
|
|
(stag %dtzy (stag %t qut))
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '('
|
|
|
|
(stag %cnhp (ifix [pel per] (most ace wide)))
|
2015-11-30 16:23:47 +03:00
|
|
|
:- '{'
|
|
|
|
(stag %cbcl (ifix [kel ker] (most ace wide)))
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '*'
|
2015-11-30 16:23:47 +03:00
|
|
|
;~ pose
|
|
|
|
(stag %bctr ;~(pfix tar hill))
|
|
|
|
(cold [%cbzz %noun] tar)
|
|
|
|
==
|
|
|
|
:- '@'
|
|
|
|
;~(pfix pat (stag %cbzz (stag %atom mota)))
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '+'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
|
|
|
(stag %dtls ;~(pfix lus (ifix [pel per] wide)))
|
|
|
|
::
|
|
|
|
%+ cook
|
|
|
|
|= a=(list (list beer))
|
|
|
|
:- %clfs
|
|
|
|
[%smdq |-(?~(a ~ (weld i.a $(a t.a))))]
|
|
|
|
(most dog ;~(pfix lus soil))
|
|
|
|
::
|
2015-12-04 22:32:49 +03:00
|
|
|
(cook |=(a+wing [%cnts a ~]) rope)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '-'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
2014-01-05 07:56:33 +04:00
|
|
|
(stag %dtzy tash:so)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
%+ cook
|
|
|
|
|= a=(list (list beer))
|
2014-03-25 21:46:30 +04:00
|
|
|
[%clsg (phax a)]
|
2013-09-29 00:21:18 +04:00
|
|
|
(most dog ;~(pfix hep soil))
|
|
|
|
::
|
2015-12-04 22:32:49 +03:00
|
|
|
(cook |=(a+wing [%cnts a ~]) rope)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '.'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
2014-10-31 06:13:40 +03:00
|
|
|
(cook (jock |) ;~(pfix dot perd:so))
|
2015-12-04 22:32:49 +03:00
|
|
|
(cook |=(a+wing [%cnts a ~]) rope)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- ['0' '9']
|
2014-01-05 07:56:33 +04:00
|
|
|
(stag %dtzy bisk:so)
|
2013-12-21 11:46:49 +04:00
|
|
|
:- ':'
|
2014-03-25 21:46:30 +04:00
|
|
|
;~ pfix col
|
|
|
|
;~ pose
|
|
|
|
(stag %smcl (ifix [pel per] (most ace wide)))
|
|
|
|
;~(pfix fas (stag %clfs wide))
|
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '='
|
2013-09-29 00:21:18 +04:00
|
|
|
(stag %dtts ;~(pfix tis (ifix [pel per] ;~(glam wide wide))))
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '?'
|
2015-12-01 03:56:44 +03:00
|
|
|
;~ pose
|
|
|
|
%+ stag %bccm
|
|
|
|
(stag %fern ;~(pfix wut (ifix [pel per] (most ace toil))))
|
2015-12-01 22:00:35 +03:00
|
|
|
:: (stag %cbwt ;~(pfix wut (ifix [pel per] (most ace wide))))
|
2015-12-01 03:56:44 +03:00
|
|
|
::
|
|
|
|
(cold [%cbzz %bean] wut)
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '['
|
2014-03-26 04:48:22 +04:00
|
|
|
rupl
|
2013-12-21 11:46:49 +04:00
|
|
|
:- ','
|
|
|
|
(stag %bccm ;~(pfix com hill))
|
|
|
|
:- '^'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
2014-01-05 07:18:06 +04:00
|
|
|
(stag %cnzz rope)
|
2015-12-01 01:21:59 +03:00
|
|
|
(cold [%cbzz %cell] ket)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '`'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix tec
|
|
|
|
;~ pose
|
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|=({a+@ta b+twig} [%ktls [%dtzy a 0] [%ktls [%dtzy %$ 0] b]])
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(pfix pat ;~(plug mota ;~(pfix tec wide)))
|
2015-12-08 04:23:27 +03:00
|
|
|
;~ pfix tar
|
|
|
|
(stag %kthp (stag [%herb %cbzz %noun] ;~(pfix tec wide)))
|
|
|
|
==
|
2013-12-14 01:11:26 +04:00
|
|
|
(stag %kthp ;~(plug toil ;~(pfix tec wide)))
|
2013-12-17 08:48:40 +04:00
|
|
|
(stag %ktls ;~(pfix lus ;~(plug wide ;~(pfix tec wide))))
|
2015-12-04 22:32:49 +03:00
|
|
|
(cook |=(a+twig [[%dtzz %n ~] a]) wide)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '"'
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|= a+(list (list beer))
|
2013-09-29 00:21:18 +04:00
|
|
|
[%smdq |-(?~(a ~ (weld i.a $(a t.a))))]
|
|
|
|
(most dog soil)
|
2013-12-21 11:46:49 +04:00
|
|
|
:- ['a' 'z']
|
2014-03-26 04:48:22 +04:00
|
|
|
rump
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '|'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
2015-12-04 22:32:49 +03:00
|
|
|
(cook |=(a+wing [%cnts a ~]) rope)
|
2013-09-29 00:21:18 +04:00
|
|
|
(stag %wtbr ;~(pfix bar (ifix [pel per] (most ace wide))))
|
2015-05-22 08:30:08 +03:00
|
|
|
;~(plug (stag %dtzz (stag %f (cold | bar))) ;~(pfix fas wide))
|
2014-01-05 07:56:33 +04:00
|
|
|
(stag %dtzy (stag %f (cold | bar)))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '~'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
2014-03-26 04:48:22 +04:00
|
|
|
rupl
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
;~ pfix sig
|
|
|
|
;~ pose
|
|
|
|
(stag %clsg (ifix [sel ser] (most ace wide)))
|
|
|
|
::
|
2013-12-09 01:23:03 +04:00
|
|
|
%+ stag %cnsg
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ ifix
|
2013-12-09 01:23:03 +04:00
|
|
|
[pel per]
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(glam rope wide (stag %cltr (most ace wide)))
|
|
|
|
::
|
|
|
|
(cook (jock |) twid:so)
|
2013-12-16 03:40:44 +04:00
|
|
|
(easy [%bczp %null])
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '/'
|
|
|
|
rood
|
|
|
|
:- '<'
|
|
|
|
(ifix [gal gar] (stag %hxgl (most ace wide)))
|
|
|
|
:- '>'
|
|
|
|
(ifix [gar gal] (stag %hxgr (most ace wide)))
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
++ soil
|
|
|
|
;~ pose
|
2014-06-18 14:01:17 +04:00
|
|
|
;~ less (jest '"""')
|
|
|
|
%+ ifix [doq doq]
|
2015-06-12 20:56:30 +03:00
|
|
|
%- star
|
2014-07-24 22:16:39 +04:00
|
|
|
;~ pose
|
2014-06-18 14:01:17 +04:00
|
|
|
;~(pfix bas ;~(pose bas doq kel bix:ab))
|
|
|
|
;~(less doq bas kel prn)
|
|
|
|
(stag ~ sump)
|
2014-07-24 22:16:39 +04:00
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2014-06-18 14:01:17 +04:00
|
|
|
%- inde %+ ifix
|
2014-06-20 03:11:17 +04:00
|
|
|
[(jest '"""\0a') (jest '\0a"""')]
|
2015-06-12 20:56:30 +03:00
|
|
|
%- star
|
2014-07-24 22:16:39 +04:00
|
|
|
;~ pose
|
2014-06-18 14:01:17 +04:00
|
|
|
;~(pfix bas ;~(pose bas kel bix:ab))
|
|
|
|
;~(less bas kel prn)
|
|
|
|
;~(less (jest '\0a"""') (just `@`10))
|
|
|
|
(stag ~ sump)
|
2014-07-24 22:16:39 +04:00
|
|
|
==
|
|
|
|
==
|
2014-04-06 01:25:16 +04:00
|
|
|
++ sump (ifix [kel ker] (stag %cltr (most ace wide)))
|
2013-12-13 05:44:15 +04:00
|
|
|
++ noil
|
|
|
|
|= tol=?
|
2013-12-13 23:21:48 +04:00
|
|
|
=< ;~ pfix buc
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
2013-12-21 06:35:33 +04:00
|
|
|
:~
|
2013-12-21 11:46:49 +04:00
|
|
|
['|' (rung bar %reed exqb)]
|
|
|
|
['&' (rung pam %bush exqb)]
|
|
|
|
['?' (rung wut %fern exqc)]
|
|
|
|
['_' (rung cab %weed exqd)]
|
|
|
|
['^' (rung ket %herb exqd)]
|
|
|
|
['=' (rung tis %bark exqe)]
|
|
|
|
:- '+'
|
2013-12-15 07:39:43 +04:00
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|=({a+tile b+tile} [%weed [%brls a [%bctr b]]])
|
2013-12-15 07:39:43 +04:00
|
|
|
;~(pfix lus (toad exqb))
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '%'
|
2013-12-13 05:44:15 +04:00
|
|
|
;~ pfix cen
|
|
|
|
%+ sear
|
|
|
|
|= a=(list tile) ^- (unit tile)
|
|
|
|
=- ?~(b ~ ?~(u.b ~ [~ %kelp i.u.b t.u.b]))
|
|
|
|
^= b
|
|
|
|
|- ^- (unit (list line))
|
|
|
|
?~ a [~ ~]
|
|
|
|
=+ c=$(a t.a)
|
|
|
|
?~ c ~
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=({{$leaf *} *} i.a) ~
|
2013-12-13 05:44:15 +04:00
|
|
|
[~ [p.i.a q.i.a] u.c]
|
|
|
|
(toad exqc)
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- ':'
|
2014-04-07 21:16:57 +04:00
|
|
|
;~ pfix col
|
2013-12-13 05:44:15 +04:00
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|=(a+(list tile) ?~(a !! ?~(t.a i.a [i.a $(a t.a)])))
|
2013-12-13 05:44:15 +04:00
|
|
|
(toad exqc)
|
|
|
|
==
|
|
|
|
==
|
|
|
|
==
|
|
|
|
|%
|
|
|
|
++ toad
|
2015-12-04 22:32:49 +03:00
|
|
|
|* har=__(exqa)
|
2013-12-13 05:44:15 +04:00
|
|
|
=+ dur=(ifix [pel per] $:har(tol |))
|
|
|
|
?:(tol ;~(pose ;~(pfix gap $:har(tol &)) dur) dur)
|
|
|
|
::
|
|
|
|
++ rung
|
2015-12-04 22:32:49 +03:00
|
|
|
|* {dif+rule tuq+* har+__(exqa)}
|
2013-12-13 05:44:15 +04:00
|
|
|
;~(pfix dif (stag tuq (toad har)))
|
|
|
|
::
|
|
|
|
++ gunk ~+((glue muck))
|
|
|
|
++ muck ?:(tol gap ace)
|
2015-12-02 04:51:08 +03:00
|
|
|
++ butt |*(zor=rule ?:(tol ;~(sfix zor ;~(plug gap duz)) zor))
|
2013-12-13 05:44:15 +04:00
|
|
|
++ loaf ?:(tol howl toil)
|
|
|
|
++ lobe ?:(tol tall wide)
|
|
|
|
++ exqa |.(loaf)
|
|
|
|
++ exqb |.(;~(gunk loaf loaf))
|
|
|
|
++ exqc |.((butt (most muck loaf)))
|
|
|
|
++ exqd |.(lobe)
|
|
|
|
++ exqe |.(;~(gunk sym loaf))
|
|
|
|
--
|
2014-08-23 05:38:20 +04:00
|
|
|
++ norm :: rune regular form
|
2013-09-29 00:21:18 +04:00
|
|
|
|= tol=?
|
|
|
|
=< %- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
|
|
|
:~ :- '|'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix bar
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
2015-02-27 03:04:50 +03:00
|
|
|
:~ ['_' (rune cab %brcb expv)]
|
2013-12-21 11:46:49 +04:00
|
|
|
['%' (rune cen %brcn expe)]
|
2015-12-04 01:54:41 +03:00
|
|
|
[':' (rune col %brcl expb)]
|
2013-12-21 11:46:49 +04:00
|
|
|
['.' (rune dot %brdt expa)]
|
2015-02-27 03:04:50 +03:00
|
|
|
['/' (rune fas %brfs expv)]
|
2013-12-21 11:46:49 +04:00
|
|
|
['-' (rune hep %brhp expa)]
|
|
|
|
['^' (rune ket %brkt expr)]
|
|
|
|
['+' (rune lus %brls expo)]
|
|
|
|
['*' (rune tar %brtr expo)]
|
|
|
|
['=' (rune tis %brts expo)]
|
|
|
|
['?' (rune wut %brwt expa)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '%'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix cen
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
|
|
|
:~ ['_' (rune cab %cncb exph)]
|
|
|
|
[':' (rune col %cncl expb)]
|
|
|
|
['.' (rune dot %cndt expb)]
|
2014-01-04 06:59:56 +04:00
|
|
|
['^' (rune ket %cnkt expd)]
|
2013-12-21 11:46:49 +04:00
|
|
|
['+' (rune lus %cnls expc)]
|
|
|
|
['-' (rune hep %cnhp expk)]
|
|
|
|
['~' (rune sig %cnsg expq)]
|
|
|
|
['*' (rune tar %cntr expm)]
|
|
|
|
['=' (rune tis %cnts exph)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '$'
|
2014-01-04 11:28:16 +04:00
|
|
|
;~ pose
|
2015-02-27 03:04:50 +03:00
|
|
|
;~ pfix buc
|
|
|
|
%- stew
|
|
|
|
^. stet ^. limo
|
|
|
|
:~
|
|
|
|
[',' (rune com %bccm expt)]
|
|
|
|
['*' (rune tar %bctr expt)]
|
|
|
|
['@' (rune pat %bcpt expu)]
|
|
|
|
==
|
|
|
|
==
|
2014-01-04 11:28:16 +04:00
|
|
|
(stag %bccm (noil tol))
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- ':'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix col
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
|
|
|
:~ ['_' (rune cab %clcb expb)]
|
|
|
|
['/' (rune fas %clfs expa)]
|
2014-01-04 06:59:56 +04:00
|
|
|
['^' (rune ket %clkt expd)]
|
2013-12-21 11:46:49 +04:00
|
|
|
['+' (rune lus %clls expc)]
|
|
|
|
['-' (rune hep %clhp expb)]
|
|
|
|
['~' (rune sig %clsg exps)]
|
|
|
|
['*' (rune tar %cltr exps)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
2015-11-30 16:23:47 +03:00
|
|
|
:- '_'
|
|
|
|
;~ pfix cab
|
|
|
|
%- stew
|
|
|
|
^. stet ^. limo
|
|
|
|
:~ ['|' (rune bar %cbbr expb)]
|
2015-12-03 23:58:36 +03:00
|
|
|
['_' (rune cab %cbcb expa)]
|
2015-11-30 16:23:47 +03:00
|
|
|
[':' (rune col %cbcl exps)]
|
|
|
|
['%' (rune cen %cbcn exps)]
|
2015-12-01 01:21:59 +03:00
|
|
|
['+' (rune lus %cbls expb)]
|
2015-11-30 16:23:47 +03:00
|
|
|
['&' (rune pam %cbpm expb)]
|
2015-12-01 01:21:59 +03:00
|
|
|
['=' (rune tis %cbts expg)]
|
2015-11-30 16:23:47 +03:00
|
|
|
['?' (rune wut %cbwt exps)]
|
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '.'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix dot
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
|
|
|
:~ ['+' (rune lus %dtls expa)]
|
|
|
|
['*' (rune tar %dttr expb)]
|
|
|
|
['=' (rune tis %dtts expb)]
|
|
|
|
['?' (rune wut %dtwt expa)]
|
|
|
|
['^' (rune ket %dtkt expn)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '^'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix ket
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
|
|
|
:~ ['|' (rune bar %ktbr expa)]
|
|
|
|
['.' (rune dot %ktdt expb)]
|
|
|
|
['-' (rune hep %kthp expo)]
|
|
|
|
['+' (rune lus %ktls expb)]
|
2014-06-11 18:06:36 +04:00
|
|
|
['#' (rune hax %kthx expb)]
|
2013-12-21 11:46:49 +04:00
|
|
|
['&' (rune pam %ktpm expa)]
|
|
|
|
['~' (rune sig %ktsg expa)]
|
|
|
|
['=' (rune tis %ktts expg)]
|
|
|
|
['?' (rune wut %ktwt expa)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '~'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix sig
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
|
|
|
:~ ['|' (rune bar %sgbr expb)]
|
|
|
|
['$' (rune buc %sgbc expg)]
|
|
|
|
['_' (rune cab %sgcb expb)]
|
|
|
|
['%' (rune cen %sgcn hind)]
|
|
|
|
['/' (rune fas %sgfs hine)]
|
|
|
|
['<' (rune gal %sggl hinb)]
|
|
|
|
['>' (rune gar %sggr hinb)]
|
|
|
|
['+' (rune lus %sgls hinc)]
|
|
|
|
['&' (rune pam %sgpm hinf)]
|
|
|
|
['?' (rune wut %sgwt hing)]
|
|
|
|
['=' (rune tis %sgts expb)]
|
|
|
|
['!' (rune zap %sgzp expb)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- ';'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix sem
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
2014-01-05 08:11:15 +04:00
|
|
|
:~ [':' (rune col %smcl expi)]
|
2013-12-21 11:46:49 +04:00
|
|
|
['.' (rune dot %smdt expi)]
|
|
|
|
['~' (rune sig %smsg expi)]
|
2015-01-09 03:10:31 +03:00
|
|
|
[';' (rune sem %smsm expo)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '='
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix tis
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
|
|
|
:~ ['|' (rune bar %tsbr expo)]
|
|
|
|
['.' (rune dot %tsdt expq)]
|
2015-11-30 05:44:03 +03:00
|
|
|
['^' (rune ket %tskt bono)]
|
2013-12-21 11:46:49 +04:00
|
|
|
[':' (rune col %tscl expp)]
|
|
|
|
['<' (rune gal %tsgl expb)]
|
|
|
|
['>' (rune gar %tsgr expb)]
|
|
|
|
['-' (rune hep %tshp expb)]
|
2013-12-23 03:32:30 +04:00
|
|
|
['*' (rune tar %tstr expj)]
|
2013-12-21 11:46:49 +04:00
|
|
|
['+' (rune lus %tsls expb)]
|
|
|
|
['~' (rune sig %tssg expi)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '?'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix wut
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
|
|
|
:~ ['|' (rune bar %wtbr exps)]
|
|
|
|
[':' (rune col %wtcl expc)]
|
|
|
|
['.' (rune dot %wtdt expc)]
|
|
|
|
['<' (rune gal %wtgl expb)]
|
|
|
|
['>' (rune gar %wtgr expb)]
|
2014-01-27 23:09:56 +04:00
|
|
|
['-' (rune hep %wthz expx)]
|
2014-01-04 11:28:16 +04:00
|
|
|
['^' (rune ket %wtkz expf)]
|
2014-10-31 06:13:40 +03:00
|
|
|
['=' (rune tis %wttz expw)]
|
2014-01-27 23:09:56 +04:00
|
|
|
['+' (rune lus %wtlz expy)]
|
2013-12-21 11:46:49 +04:00
|
|
|
['&' (rune pam %wtpm exps)]
|
2014-01-04 11:28:16 +04:00
|
|
|
['@' (rune pat %wtpz expf)]
|
|
|
|
['~' (rune sig %wtsz expf)]
|
2013-12-21 11:46:49 +04:00
|
|
|
['!' (rune zap %wtzp expa)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '!'
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix zap
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
|
|
|
:~ [':' ;~(pfix col (toad expz))]
|
2015-06-17 22:49:03 +03:00
|
|
|
['.' ;~(pfix dot (toad |.(loaf(bug |))))]
|
2013-12-21 11:46:49 +04:00
|
|
|
[',' (rune com %zpcm expb)]
|
|
|
|
[';' (rune sem %zpsm expb)]
|
2014-09-11 00:00:23 +04:00
|
|
|
['^' ;~(pfix ket (sear prey (toad exps)))]
|
2013-12-21 11:46:49 +04:00
|
|
|
['>' (rune gar %zpgr expa)]
|
|
|
|
['=' (rune tis %zpts expa)]
|
2014-01-05 05:15:52 +04:00
|
|
|
['?' (rune wut %zpwt hinh)]
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
|
|
|
==
|
|
|
|
|%
|
2014-08-23 05:38:20 +04:00
|
|
|
++ boog :: core arms
|
2013-09-29 00:21:18 +04:00
|
|
|
%+ knee [p=*term q=*foot] |. ~+
|
|
|
|
;~ pfix lus
|
|
|
|
;~ pose
|
2013-12-09 01:23:03 +04:00
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|=({a+$ash b+term c+twig} [b a c])
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ gunk
|
|
|
|
(cold %ash (just '+'))
|
|
|
|
;~(pose (cold %$ buc) sym)
|
|
|
|
loaf
|
|
|
|
==
|
|
|
|
::
|
2013-12-09 01:23:03 +04:00
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|=({a+$elm b+term c+twig} [b a c])
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ gunk
|
|
|
|
(cold %elm (just '-'))
|
|
|
|
;~(pose (cold %$ buc) sym)
|
|
|
|
loaf
|
|
|
|
==
|
|
|
|
::
|
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|=({a+$oak b+term} [b a ~])
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ gunk
|
|
|
|
(cold %oak (just '|'))
|
2013-12-09 01:23:03 +04:00
|
|
|
;~(pose (cold %$ buc) sym)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2014-08-23 05:38:20 +04:00
|
|
|
++ wisp :: core tail
|
2013-09-29 00:21:18 +04:00
|
|
|
%- ulva
|
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|=(a+(list {p+term q+foot}) (~(gas by *(map term foot)) a))
|
2013-09-29 00:21:18 +04:00
|
|
|
(most muck boog)
|
|
|
|
::
|
2014-08-23 05:38:20 +04:00
|
|
|
++ toad :: untrap parser exp
|
2015-12-04 22:32:49 +03:00
|
|
|
|* har=__(expa)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ dur=(ifix [pel per] $:har(tol |))
|
|
|
|
?:(tol ;~(pose ;~(pfix gap $:har(tol &)) dur) dur)
|
|
|
|
::
|
2014-08-23 05:38:20 +04:00
|
|
|
++ rune :: build rune
|
2015-12-04 22:32:49 +03:00
|
|
|
|* {dif+rule tuq+* har+__(expa)}
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(pfix dif (stag tuq (toad har)))
|
|
|
|
::
|
2014-08-24 06:20:02 +04:00
|
|
|
++ glop ~+((glue mash)) :: separated by space
|
|
|
|
++ gunk ~+((glue muck)) :: separated list
|
2015-12-02 04:51:08 +03:00
|
|
|
++ butt |* zor=rule :: closing == if tall
|
2014-08-23 05:38:20 +04:00
|
|
|
?:(tol ;~(sfix zor ;~(plug gap duz)) zor)
|
2015-12-02 04:51:08 +03:00
|
|
|
++ ulva |* zor=rule :: closing -- and tall
|
2014-08-23 05:38:20 +04:00
|
|
|
?.(tol fail ;~(sfix zor ;~(plug gap dun)))
|
2014-08-24 06:20:02 +04:00
|
|
|
++ hank (most muck loaf) :: gapped twigs
|
2014-08-23 05:38:20 +04:00
|
|
|
++ loaf ?:(tol tall wide) :: hoon, current width
|
|
|
|
++ lobe ?:(tol howl toil) :: tile form
|
|
|
|
++ mash ?:(tol gap ;~(plug com ace)) :: list separator
|
|
|
|
++ muck ?:(tol gap ace) :: general separator
|
|
|
|
++ teak %+ knee *tiki |. ~+ :: wing or twig
|
2014-01-04 06:59:56 +04:00
|
|
|
=+ ^= gub
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {a+term b+_%({$& p+wing} {$| p+twig})}
|
2014-01-04 06:59:56 +04:00
|
|
|
^- tiki
|
2015-12-08 04:23:27 +03:00
|
|
|
?-(-.b $& [%& [~ a] p.b], $| [%| [~ a] p.b])
|
2014-01-04 06:59:56 +04:00
|
|
|
=+ ^= wyp
|
2014-04-07 21:16:57 +04:00
|
|
|
;~ pose
|
2014-01-04 06:59:56 +04:00
|
|
|
%+ cook gub
|
2014-04-07 21:16:57 +04:00
|
|
|
;~ plug
|
2014-01-04 06:59:56 +04:00
|
|
|
sym
|
|
|
|
;~(pfix tis ;~(pose (stag %& rope) (stag %| wide)))
|
|
|
|
==
|
|
|
|
::
|
|
|
|
(stag %& (stag ~ rope))
|
|
|
|
(stag %| (stag ~ wide))
|
|
|
|
==
|
|
|
|
?. tol wyp
|
|
|
|
;~ pose
|
|
|
|
wyp
|
|
|
|
::
|
|
|
|
;~ pfix
|
|
|
|
;~(plug ket tis gap)
|
|
|
|
%+ cook gub
|
2014-04-07 21:16:57 +04:00
|
|
|
;~ plug
|
2014-01-04 06:59:56 +04:00
|
|
|
sym
|
|
|
|
;~(pfix gap ;~(pose (stag %& rope) (stag %| tall)))
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
|
|
|
(stag %| (stag ~ tall))
|
|
|
|
==
|
2014-08-23 05:38:20 +04:00
|
|
|
++ race (most mash ;~(gunk lobe loaf)) :: list [tile twig]
|
|
|
|
++ rack (most mash ;~(gunk loaf loaf)) :: list [twig twig]
|
|
|
|
++ rick (most mash ;~(gunk rope loaf)) :: list [wing twig]
|
2015-12-04 22:32:49 +03:00
|
|
|
::
|
|
|
|
:: rune contents
|
|
|
|
::
|
2014-08-23 05:38:20 +04:00
|
|
|
++ expa |.(loaf) :: one twig
|
|
|
|
++ expb |.(;~(gunk loaf loaf)) :: two twigs
|
|
|
|
++ expc |.(;~(gunk loaf loaf loaf)) :: three twigs
|
|
|
|
++ expd |.(;~(gunk loaf loaf loaf loaf)) :: four twigs
|
|
|
|
++ expe |.(wisp) :: core tail
|
|
|
|
++ expf |.(;~(gunk teak loaf loaf)) :: tiki and two twigs
|
|
|
|
++ expg |.(;~(gunk sym loaf)) :: term and twig
|
|
|
|
++ exph |.((butt ;~(gunk rope rick))) :: wing, [tile twig]s
|
2014-08-24 06:20:02 +04:00
|
|
|
++ expi |.((butt ;~(gunk loaf hank))) :: one or more twigs
|
|
|
|
++ expj |.(;~(gunk sym rope loaf)) :: term, wing, and twig
|
|
|
|
++ expk |.(;~(gunk loaf ;~(plug loaf (easy ~)))) :: list of two twigs
|
|
|
|
++ expm |.((butt ;~(gunk rope loaf rick))) :: several [tile twig]s
|
|
|
|
++ expn |.((stag %cltr (butt hank))) :: autoconsed twigs
|
|
|
|
++ expo |.(;~(gunk lobe loaf)) :: tile and twig
|
|
|
|
++ expp |.(;~(gunk (butt rick) loaf)) :: [wing twig]s, twig
|
|
|
|
++ expq |.(;~(gunk rope loaf loaf)) :: wing and two twigs
|
|
|
|
++ expr |.(;~(gunk loaf wisp)) :: twig and core tail
|
|
|
|
++ exps |.((butt hank)) :: closed gapped twigs
|
2015-02-27 03:04:50 +03:00
|
|
|
++ expt |.(lobe) :: tile
|
|
|
|
++ expu |.(;~(gunk rope lobe)) :: wing and tile
|
|
|
|
++ expv |.(;~(gunk lobe wisp)) :: tile, core tail
|
2014-10-31 06:13:40 +03:00
|
|
|
++ expw |.(;~(gunk lobe teak)) :: tile and tiki
|
2014-08-24 06:20:02 +04:00
|
|
|
++ expx |.((butt ;~(gunk teak race))) :: tiki, [tile twig]s
|
2015-05-07 04:41:20 +03:00
|
|
|
++ expy |.((butt ;~(gunk teak loaf race))) :: tk twig [tile twig]s
|
2014-08-24 06:20:02 +04:00
|
|
|
++ expz |.(loaf(bug &)) :: twig with tracing
|
2015-12-04 22:32:49 +03:00
|
|
|
::
|
|
|
|
:: hint syntax
|
|
|
|
::
|
2014-08-24 06:20:02 +04:00
|
|
|
++ hinb |.(;~(gunk bont loaf)) :: hint and twig
|
|
|
|
++ hinc |. :: optional =en, twig
|
|
|
|
;~(pose ;~(gunk bony loaf) ;~(plug (easy ~) loaf))
|
2014-08-25 08:20:32 +04:00
|
|
|
++ hind |.(;~(gunk bonk loaf bonz loaf)) :: jet twig "bon"s twig
|
|
|
|
++ hine |.(;~(gunk bonk loaf)) :: jet-hint and twig
|
|
|
|
++ hinf |. :: 0-3 >s, two twigs
|
2013-12-09 01:23:03 +04:00
|
|
|
;~ pose
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(gunk (cook lent (stun [1 3] gar)) loaf loaf)
|
|
|
|
(stag 0 ;~(gunk loaf loaf))
|
|
|
|
==
|
2014-08-25 08:20:32 +04:00
|
|
|
++ hing |. :: 0-3 >s, three twigs
|
2013-12-09 01:23:03 +04:00
|
|
|
;~ pose
|
2013-10-06 11:44:07 +04:00
|
|
|
;~(gunk (cook lent (stun [1 3] gar)) loaf loaf loaf)
|
|
|
|
(stag 0 ;~(gunk loaf loaf loaf))
|
|
|
|
==
|
2014-08-24 06:20:02 +04:00
|
|
|
++ bonk :: jet signature
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pfix cen
|
|
|
|
;~ pose
|
|
|
|
;~(plug sym ;~(pfix col ;~(plug sym ;~(pfix dot ;~(pfix dot dem)))))
|
|
|
|
;~(plug sym ;~(pfix col ;~(plug sym ;~(pfix dot dem))))
|
|
|
|
;~(plug sym ;~(pfix dot dem))
|
|
|
|
sym
|
|
|
|
==
|
|
|
|
==
|
2014-08-25 08:20:32 +04:00
|
|
|
++ hinh |. :: 1/2 numbers, twig
|
2014-04-07 21:16:57 +04:00
|
|
|
;~ gunk
|
|
|
|
;~ pose
|
|
|
|
dem
|
2014-01-05 05:15:52 +04:00
|
|
|
(ifix [sel ser] ;~(plug dem ;~(pfix ace dem)))
|
|
|
|
==
|
|
|
|
loaf
|
|
|
|
==
|
2015-11-30 05:44:03 +03:00
|
|
|
++ bono |. :: term, wing, 2 twigs
|
|
|
|
;~ gunk :: (as twigs)
|
|
|
|
(cook |=(cog=term [%cnzz [cog ~]]) sym)
|
|
|
|
(cook |=(hyp=wing [%cnzz hyp]) rope)
|
|
|
|
loaf
|
|
|
|
loaf
|
|
|
|
==
|
2014-08-24 06:20:02 +04:00
|
|
|
++ bont ;~ (bend) :: term, optional twig
|
2014-04-07 21:16:57 +04:00
|
|
|
;~(pfix cen sym)
|
2014-01-04 11:28:16 +04:00
|
|
|
;~(pfix dot ;~(pose wide ;~(pfix muck loaf)))
|
|
|
|
==
|
2015-12-04 22:32:49 +03:00
|
|
|
++ bony (cook |=(a+(list) (lent a)) (plus tis)) :: base 1 =en count
|
2014-08-25 08:20:32 +04:00
|
|
|
++ bonz :: term-labelled twigs
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ pose
|
|
|
|
(cold ~ sig)
|
|
|
|
%+ ifix
|
2013-12-21 04:59:03 +04:00
|
|
|
?:(tol [;~(plug duz gap) ;~(plug gap duz)] [pel per])
|
2013-09-29 00:21:18 +04:00
|
|
|
(more mash ;~(gunk ;~(pfix cen sym) loaf))
|
|
|
|
==
|
|
|
|
--
|
|
|
|
::
|
2015-12-04 22:32:49 +03:00
|
|
|
++ lang :: lung sample
|
|
|
|
_: ros+twig :: XX translation
|
|
|
|
_= vil
|
|
|
|
_% {$tis p+twig}
|
|
|
|
{$col p+twig}
|
|
|
|
{$ket p+twig}
|
|
|
|
{$lus p+twig}
|
|
|
|
{$pat p+tile}
|
|
|
|
{$pel p+tram}
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ lung
|
|
|
|
~+
|
|
|
|
%- bend
|
2015-12-04 22:32:49 +03:00
|
|
|
|= lang
|
2013-12-15 11:07:57 +04:00
|
|
|
^- (unit twig)
|
2013-09-29 00:21:18 +04:00
|
|
|
?- -.vil
|
2015-12-04 22:32:49 +03:00
|
|
|
$col [~ %tsgl ros p.vil]
|
|
|
|
$pel (bind ~(reek ap ros) |=(hyp=wing [%cnts hyp p.vil]))
|
|
|
|
$pat (bind ~(reek ap ros) |=(hyp=wing [%bcpt hyp p.vil]))
|
|
|
|
$ket [~ ros p.vil]
|
|
|
|
$lus =+ tog=~(hock ap ros)
|
2015-12-01 01:21:59 +03:00
|
|
|
?.(?=(@ tog) ~ [~ %cbts tog p.vil])
|
2015-12-04 22:32:49 +03:00
|
|
|
$tis =+ tog=~(hock ap ros)
|
2015-02-27 04:29:39 +03:00
|
|
|
?:(=([%0 ~] tog) ~ [~ %ktts tog p.vil])
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ long
|
2013-12-15 11:07:57 +04:00
|
|
|
%+ knee *twig |. ~+
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ lung
|
|
|
|
scat
|
|
|
|
;~ pose
|
|
|
|
;~(plug (cold %tis tis) wide)
|
|
|
|
;~(plug (cold %col col) wide)
|
|
|
|
;~(plug (cold %ket ket) wide)
|
2015-12-01 01:21:59 +03:00
|
|
|
;~(plug (cold %lus lus) wide)
|
2013-12-17 08:48:40 +04:00
|
|
|
;~(plug (cold %pat pat) hill)
|
2013-09-29 00:21:18 +04:00
|
|
|
;~ plug
|
|
|
|
(easy %pel)
|
2013-12-15 12:23:23 +04:00
|
|
|
(ifix [pel per] lobo)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2013-12-15 12:23:23 +04:00
|
|
|
++ lobo (most ;~(plug com ace) ;~(glam rope wide))
|
2013-09-29 00:21:18 +04:00
|
|
|
++ loon (most ;~(plug com ace) ;~(glam wide wide))
|
2014-08-23 05:38:20 +04:00
|
|
|
++ lute :: tall [] noun
|
2013-11-23 00:22:14 +04:00
|
|
|
~+
|
|
|
|
%+ stag %cltr
|
|
|
|
%+ ifix
|
|
|
|
[;~(plug sel gap) ;~(plug gap ser)]
|
|
|
|
(most gap tall)
|
|
|
|
::
|
2014-08-23 05:38:20 +04:00
|
|
|
++ rope :: wing form
|
2013-12-26 21:12:07 +04:00
|
|
|
%+ knee *wing
|
2013-09-29 00:21:18 +04:00
|
|
|
|. ~+
|
2015-12-04 22:32:49 +03:00
|
|
|
%+ (slug |=({a+limb b+wing} [a b]))
|
2013-09-29 00:21:18 +04:00
|
|
|
dot
|
|
|
|
;~ pose
|
2013-12-09 01:23:03 +04:00
|
|
|
%+ cook
|
2015-12-04 22:32:49 +03:00
|
|
|
|=({a+(list) b+term} ?~(a b [%| (lent a) b]))
|
2013-09-29 00:21:18 +04:00
|
|
|
;~(plug (star ket) ;~(pose sym (cold %$ buc)))
|
|
|
|
::
|
2013-12-09 01:23:03 +04:00
|
|
|
%+ cook
|
2015-12-05 02:59:29 +03:00
|
|
|
|=(a+axis [%& a])
|
2013-12-09 01:23:03 +04:00
|
|
|
;~ pose
|
|
|
|
;~(pfix lus dim:ag)
|
2015-12-05 02:59:29 +03:00
|
|
|
;~(pfix pam (cook |=(a+@ ?:(=(0 a) 0 (mul 2 +($(a (dec a)))))) dim:ag))
|
|
|
|
;~(pfix bar (cook |=(a+@ ?:(=(0 a) 1 +((mul 2 $(a (dec a)))))) dim:ag))
|
2013-12-09 01:23:03 +04:00
|
|
|
ven
|
2013-09-29 00:21:18 +04:00
|
|
|
(cold 1 dot)
|
|
|
|
==
|
|
|
|
==
|
|
|
|
::
|
2014-08-23 05:38:20 +04:00
|
|
|
++ tall %+ knee *twig :: full tall form
|
2014-04-06 01:25:16 +04:00
|
|
|
|.(~+((wart ;~(pose (norm &) long lute ape:(sail &)))))
|
2014-08-23 05:38:20 +04:00
|
|
|
++ wide %+ knee *twig :: full wide form
|
2014-08-25 19:09:50 +04:00
|
|
|
|.(~+((wart ;~(pose (norm |) long ape:(sail |)))))
|
2013-12-16 05:15:04 +04:00
|
|
|
++ hill (knee *tile |.(~+(;~(pose (noil |) toil))))
|
2013-12-13 05:44:15 +04:00
|
|
|
++ howl (knee *tile |.(~+(;~(pose (noil &) toil))))
|
|
|
|
++ toil
|
|
|
|
%+ knee *tile |. ~+
|
2014-04-07 21:16:57 +04:00
|
|
|
%- stew
|
2013-12-21 11:46:49 +04:00
|
|
|
^. stet ^. limo
|
2013-12-21 06:35:33 +04:00
|
|
|
:~
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '%'
|
2015-12-08 04:23:27 +03:00
|
|
|
fail
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '&'
|
|
|
|
(stag %leaf (stag %f (cold & pam)))
|
|
|
|
:- '*'
|
|
|
|
(cold [%axil %noun] tar)
|
|
|
|
:- '?'
|
2013-12-15 09:07:33 +04:00
|
|
|
;~ pose
|
|
|
|
(stag %fern ;~(pfix wut (ifix [pel per] (most ace toil))))
|
2013-12-16 00:52:24 +04:00
|
|
|
(stag %axil (cold %bean wut))
|
2013-12-15 09:07:33 +04:00
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '@'
|
|
|
|
;~(pfix pat (stag %axil (stag %atom mota)))
|
|
|
|
:- '^'
|
2013-12-15 09:07:33 +04:00
|
|
|
;~ pose
|
2014-01-05 07:18:06 +04:00
|
|
|
(stag %herb (stag %cnzz rope))
|
2013-12-16 00:52:24 +04:00
|
|
|
(cold [%axil %cell] ket)
|
2013-12-15 09:07:33 +04:00
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '('
|
|
|
|
(stag %herb wide)
|
2015-11-30 16:30:41 +03:00
|
|
|
:- '{'
|
|
|
|
(stag %herb wide)
|
2014-04-07 21:16:57 +04:00
|
|
|
:- '.'
|
2014-01-21 01:50:54 +04:00
|
|
|
(stag %herb (stag %cnzz rope))
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '['
|
2015-12-08 04:46:28 +03:00
|
|
|
fail
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '_'
|
2015-12-02 02:51:12 +03:00
|
|
|
;~ pose
|
|
|
|
(stag %weed ;~(pfix cab wide))
|
|
|
|
(stag %herb wide)
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- ['0' '9']
|
|
|
|
(stag %leaf bisk:so)
|
|
|
|
:- ['a' 'z']
|
2013-12-15 09:07:33 +04:00
|
|
|
;~ pose
|
2015-12-08 05:04:19 +03:00
|
|
|
%+ sear
|
|
|
|
|=(a+tile `(unit tile)`~)
|
2013-12-15 09:07:33 +04:00
|
|
|
(stag %bark ;~(plug sym ;~(pfix tis toil)))
|
|
|
|
(stag %herb wide)
|
|
|
|
==
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '$'
|
2015-12-08 05:04:19 +03:00
|
|
|
(stag %herb wide)
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '|'
|
2015-12-08 05:04:19 +03:00
|
|
|
fail
|
2013-12-21 11:46:49 +04:00
|
|
|
:- '~'
|
2015-12-08 05:04:19 +03:00
|
|
|
fail
|
2014-04-07 21:16:57 +04:00
|
|
|
==
|
2013-12-09 01:23:03 +04:00
|
|
|
++ wart
|
2015-12-02 04:51:08 +03:00
|
|
|
|* zor=rule
|
2013-12-09 01:23:03 +04:00
|
|
|
%+ here
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {a+pint b+twig}
|
2013-09-29 00:21:18 +04:00
|
|
|
?:(bug [%zpcb [wer a] b] b)
|
|
|
|
zor
|
|
|
|
--
|
|
|
|
::
|
|
|
|
++ vest
|
|
|
|
~/ %vest
|
|
|
|
|= tub=nail
|
|
|
|
~| %vest
|
2013-12-15 11:07:57 +04:00
|
|
|
^- (like twig)
|
2013-09-29 00:21:18 +04:00
|
|
|
%. tub
|
|
|
|
%- full
|
|
|
|
(ifix [gay gay] tall:vast)
|
|
|
|
::
|
|
|
|
++ vice
|
|
|
|
|= txt=@ta
|
2013-12-15 11:07:57 +04:00
|
|
|
^- twig
|
2013-09-29 00:21:18 +04:00
|
|
|
(rash txt wide:vast)
|
2014-09-27 06:17:43 +04:00
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:::::: :::::: profiling support; move me ::::::
|
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2015-06-12 20:56:30 +03:00
|
|
|
++ doss
|
2015-12-04 22:32:49 +03:00
|
|
|
_: mon+moan :: sample count
|
|
|
|
hit+(map term @ud) :: hit points
|
|
|
|
cut+(map path hump) :: cut points
|
2014-09-27 06:17:43 +04:00
|
|
|
==
|
2014-12-03 00:53:35 +03:00
|
|
|
++ moan :: sample metric
|
2015-12-04 22:32:49 +03:00
|
|
|
_: fun+@ud :: samples in C
|
|
|
|
noc+@ud :: samples in nock
|
|
|
|
glu+@ud :: samples in glue
|
|
|
|
mal+@ud :: samples in alloc
|
|
|
|
far+@ud :: samples in frag
|
|
|
|
coy+@ud :: samples in copy
|
|
|
|
euq+@ud :: samples in equal
|
2014-12-03 00:53:35 +03:00
|
|
|
== ::
|
2014-09-27 06:17:43 +04:00
|
|
|
::
|
|
|
|
++ hump
|
2015-12-04 22:32:49 +03:00
|
|
|
_: mon+moan :: sample count
|
|
|
|
out+(map path @ud) :: calls out of
|
|
|
|
inn+(map path @ud) :: calls into
|
2014-09-27 06:17:43 +04:00
|
|
|
==
|
|
|
|
::
|
2014-09-27 00:23:27 +04:00
|
|
|
++ pi-heck
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {nam+@tas day+doss}
|
2014-09-27 06:17:43 +04:00
|
|
|
^- doss
|
|
|
|
=+ lam=(~(get by hit.day) nam)
|
|
|
|
day(hit (~(put by hit.day) nam ?~(lam 1 +(u.lam))))
|
|
|
|
::
|
2014-09-27 00:23:27 +04:00
|
|
|
++ pi-noon :: sample trace
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {mot+term paz+(list path) day+doss}
|
|
|
|
=| lax+(unit path)
|
2014-09-27 06:17:43 +04:00
|
|
|
|- ^- doss
|
2014-12-03 00:53:35 +03:00
|
|
|
?~ paz day(mon (pi-mope mot mon.day))
|
2014-09-27 06:17:43 +04:00
|
|
|
%= $
|
2014-11-28 23:29:10 +03:00
|
|
|
paz t.paz
|
|
|
|
lax `i.paz
|
2014-09-27 06:17:43 +04:00
|
|
|
cut.day
|
2014-11-28 23:29:10 +03:00
|
|
|
%+ ~(put by cut.day) i.paz
|
2014-09-27 06:17:43 +04:00
|
|
|
^- hump
|
2014-11-28 23:29:10 +03:00
|
|
|
=+ nax=`(unit path)`?~(t.paz ~ `i.t.paz)
|
2014-12-03 00:53:35 +03:00
|
|
|
=+ hup=`hump`=+(hup=(~(get by cut.day) i.paz) ?^(hup u.hup [*moan ~ ~]))
|
|
|
|
:+ (pi-mope mot mon.hup)
|
2015-06-12 20:56:30 +03:00
|
|
|
?~ lax out.hup
|
|
|
|
=+ hag=(~(get by out.hup) u.lax)
|
2014-12-03 20:36:42 +03:00
|
|
|
(~(put by out.hup) u.lax ?~(hag 1 +(u.hag)))
|
2015-06-12 20:56:30 +03:00
|
|
|
?~ nax inn.hup
|
|
|
|
=+ hag=(~(get by inn.hup) u.nax)
|
2014-12-03 20:36:42 +03:00
|
|
|
(~(put by inn.hup) u.nax ?~(hag 1 +(u.hag)))
|
2014-09-27 06:17:43 +04:00
|
|
|
==
|
2014-12-03 00:53:35 +03:00
|
|
|
++ pi-mope :: add sample
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {mot+term mon+moan}
|
2014-12-03 00:53:35 +03:00
|
|
|
?+ mot mon
|
2015-12-04 22:32:49 +03:00
|
|
|
$fun mon(fun +(fun.mon))
|
|
|
|
$noc mon(noc +(noc.mon))
|
|
|
|
$glu mon(glu +(glu.mon))
|
|
|
|
$mal mon(mal +(mal.mon))
|
|
|
|
$far mon(far +(far.mon))
|
|
|
|
$coy mon(coy +(coy.mon))
|
|
|
|
$euq mon(euq +(euq.mon))
|
2014-12-03 00:53:35 +03:00
|
|
|
==
|
|
|
|
++ pi-moth :: count sample
|
2015-12-04 22:32:49 +03:00
|
|
|
|= mon+moan ^- @ud
|
2015-01-15 22:10:29 +03:00
|
|
|
:(add fun.mon noc.mon glu.mon mal.mon far.mon coy.mon euq.mon)
|
2014-12-03 00:53:35 +03:00
|
|
|
::
|
|
|
|
++ pi-mumm :: print sample
|
2015-12-04 22:32:49 +03:00
|
|
|
|= mon+moan ^- tape
|
2014-12-03 00:53:35 +03:00
|
|
|
=+ tot=(pi-moth mon)
|
|
|
|
;: welp
|
|
|
|
^- tape
|
|
|
|
?: =(0 noc.mon) ~
|
2014-12-03 03:26:30 +03:00
|
|
|
(welp (scow %ud (div (mul 100 noc.mon) tot)) "n ")
|
2014-12-03 00:53:35 +03:00
|
|
|
::
|
|
|
|
^- tape
|
|
|
|
?: =(0 fun.mon) ~
|
2014-12-03 03:26:30 +03:00
|
|
|
(welp (scow %ud (div (mul 100 fun.mon) tot)) "c ")
|
2014-12-03 00:53:35 +03:00
|
|
|
::
|
|
|
|
^- tape
|
|
|
|
?: =(0 glu.mon) ~
|
2014-12-03 03:26:30 +03:00
|
|
|
(welp (scow %ud (div (mul 100 glu.mon) tot)) "g ")
|
2014-12-03 00:53:35 +03:00
|
|
|
::
|
|
|
|
^- tape
|
|
|
|
?: =(0 mal.mon) ~
|
2014-12-03 03:26:30 +03:00
|
|
|
(welp (scow %ud (div (mul 100 mal.mon) tot)) "m ")
|
2014-12-03 00:53:35 +03:00
|
|
|
::
|
|
|
|
^- tape
|
|
|
|
?: =(0 far.mon) ~
|
2014-12-03 03:26:30 +03:00
|
|
|
(welp (scow %ud (div (mul 100 far.mon) tot)) "f ")
|
2015-01-15 22:10:29 +03:00
|
|
|
::
|
|
|
|
^- tape
|
|
|
|
?: =(0 coy.mon) ~
|
|
|
|
(welp (scow %ud (div (mul 100 coy.mon) tot)) "y ")
|
|
|
|
::
|
|
|
|
^- tape
|
|
|
|
?: =(0 euq.mon) ~
|
|
|
|
(welp (scow %ud (div (mul 100 euq.mon) tot)) "e ")
|
2014-12-03 00:53:35 +03:00
|
|
|
==
|
2014-09-27 06:17:43 +04:00
|
|
|
::
|
2014-09-27 00:23:27 +04:00
|
|
|
++ pi-tell :: produce dump
|
2015-12-04 22:32:49 +03:00
|
|
|
|= day+doss
|
2014-09-27 06:17:43 +04:00
|
|
|
^- (list tape)
|
2014-12-03 00:53:35 +03:00
|
|
|
=+ tot=(pi-moth mon.day)
|
2014-09-27 06:17:43 +04:00
|
|
|
;: welp
|
2014-12-03 00:53:35 +03:00
|
|
|
[(welp "events: " (pi-mumm mon.day)) ~]
|
2014-09-27 06:17:43 +04:00
|
|
|
::
|
|
|
|
%+ turn
|
|
|
|
(~(tap by hit.day) ~)
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {nam+term num+@ud}
|
2014-11-30 13:06:41 +03:00
|
|
|
:(welp (trip nam) ": " (scow %ud num))
|
2014-09-27 06:17:43 +04:00
|
|
|
["" ~]
|
|
|
|
::
|
|
|
|
%- zing
|
|
|
|
^- (list (list tape))
|
|
|
|
%+ turn
|
2014-12-01 10:32:19 +03:00
|
|
|
%+ sort (~(tap by cut.day))
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {one+(pair path hump) two+(pair path hump)}
|
2014-12-03 00:53:35 +03:00
|
|
|
(gth (pi-moth mon.q.one) (pi-moth mon.q.two))
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {pax+path hup+hump}
|
2014-12-03 03:26:30 +03:00
|
|
|
=+ ott=(pi-moth mon.hup)
|
2014-09-27 06:17:43 +04:00
|
|
|
;: welp
|
2014-12-01 10:32:19 +03:00
|
|
|
[(welp "label: " (spud pax)) ~]
|
2014-12-03 00:53:35 +03:00
|
|
|
[(welp "price: " (scow %ud (div (mul 100 ott) tot))) ~]
|
2014-12-03 03:26:30 +03:00
|
|
|
[(welp "shape: " (pi-mumm mon.hup)) ~]
|
2014-09-27 06:17:43 +04:00
|
|
|
::
|
2014-12-03 20:36:42 +03:00
|
|
|
?: =(~ out.hup) ~
|
|
|
|
:- "into:"
|
2014-09-27 06:17:43 +04:00
|
|
|
%+ turn
|
2014-12-03 20:36:42 +03:00
|
|
|
(~(tap by out.hup) ~)
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {pax+path num+@ud}
|
2014-09-27 06:17:43 +04:00
|
|
|
^- tape
|
2014-11-28 23:29:10 +03:00
|
|
|
:(welp " " (spud pax) ": " (scow %ud num))
|
2014-09-27 06:17:43 +04:00
|
|
|
::
|
2014-12-03 20:36:42 +03:00
|
|
|
?: =(~ inn.hup) ~
|
|
|
|
:- "from:"
|
2014-09-27 06:17:43 +04:00
|
|
|
%+ turn
|
2014-12-03 20:36:42 +03:00
|
|
|
(~(tap by inn.hup) ~)
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {pax+path num+@ud}
|
2014-09-27 06:17:43 +04:00
|
|
|
^- tape
|
2014-11-28 23:29:10 +03:00
|
|
|
:(welp " " (spud pax) ": " (scow %ud num))
|
2014-12-01 10:32:19 +03:00
|
|
|
::
|
2014-12-03 03:26:30 +03:00
|
|
|
["" ~]
|
2014-12-01 10:32:19 +03:00
|
|
|
~
|
2014-09-27 06:17:43 +04:00
|
|
|
==
|
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
--
|
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:::::: :::::: volume 3, Arvo models and skeleton ::::::
|
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2014-12-03 20:36:42 +03:00
|
|
|
~% %arvo + ~
|
2013-09-29 00:21:18 +04:00
|
|
|
|%
|
2015-12-04 22:32:49 +03:00
|
|
|
++ arch {hax+@uvI fil+(unit @uvI) dir+(map @ta $~)} :: fundamental node
|
|
|
|
++ arvo (mold {p+term q+mill} mill) :: arvo card
|
|
|
|
++ beam {{p+ship q+desk r+case} s+path} :: global name
|
|
|
|
++ beak {p+ship q+desk r+case} :: garnish with beak
|
|
|
|
++ bone @ud :: opaque duct
|
|
|
|
++ care _?($$ $u $v $w $x $y $z) :: namespace mode
|
2014-05-27 08:40:22 +04:00
|
|
|
++ case :: version
|
2015-12-04 22:32:49 +03:00
|
|
|
_% {$da p+@da} :: date
|
|
|
|
{$tas p+@tas} :: label
|
|
|
|
{$ud p+@ud} :: sequence
|
2014-05-27 08:40:22 +04:00
|
|
|
== ::
|
2015-12-04 22:32:49 +03:00
|
|
|
++ desk @tas :: ship desk case spur
|
2015-03-11 02:56:08 +03:00
|
|
|
++ cage (cask vase) :: global metadata
|
2015-12-04 22:32:49 +03:00
|
|
|
++ cask |*(a+_+(* *) (pair mark a)) :: global data
|
2014-06-02 01:07:13 +04:00
|
|
|
++ cuff :: permissions
|
2015-12-04 22:32:49 +03:00
|
|
|
_: p+(unit (set monk)) :: can be read by
|
|
|
|
q+(set monk) :: caused or created by
|
2014-05-26 00:35:07 +04:00
|
|
|
== ::
|
2015-12-04 22:32:49 +03:00
|
|
|
++ curd {p+@tas q+*} :: typeless card
|
2013-09-29 00:21:18 +04:00
|
|
|
++ duct (list wire) :: causal history
|
2015-12-04 22:32:49 +03:00
|
|
|
++ hypo |*(a+_+(* *) (pair type a)) :: type associated
|
|
|
|
++ hobo |* a+_+(* *) :: kiss wrapper
|
|
|
|
_? _% {$soft p+*} ::
|
2014-06-04 14:40:09 +04:00
|
|
|
== ::
|
|
|
|
a ::
|
|
|
|
== ::
|
|
|
|
++ kirk (unit (set monk)) :: audience
|
2014-05-28 12:57:00 +04:00
|
|
|
++ lens :: observation core
|
2014-06-07 05:09:44 +04:00
|
|
|
$_ ^? ::
|
2015-12-04 22:32:49 +03:00
|
|
|
|% ++ u *(unit (unit $~)) :: existence
|
2014-05-29 03:43:30 +04:00
|
|
|
++ v *(unit (unit cage)) :: full history
|
|
|
|
++ w *(unit (unit (unit cage))) :: latest diff
|
|
|
|
++ x *(unit (unit cage)) :: data at path
|
2014-05-28 12:57:00 +04:00
|
|
|
++ y *(unit (unit arch)) :: directory
|
2014-05-29 03:43:30 +04:00
|
|
|
++ z *(unit (unit cage)) :: current subtree
|
2014-05-28 12:57:00 +04:00
|
|
|
-- ::
|
2015-02-27 09:35:41 +03:00
|
|
|
++ marc :: structured mark
|
2015-12-04 22:32:49 +03:00
|
|
|
_| mark :: plain mark
|
|
|
|
_% {$tabl p+(list (pair marc marc))} :: map
|
2015-02-27 09:35:41 +03:00
|
|
|
== ::
|
2015-12-04 22:32:49 +03:00
|
|
|
++ mark @tas :: content type
|
|
|
|
++ mash |=(* (mass +<)) :: producing mass
|
|
|
|
++ mass (pair cord (each noun (list mash))) :: memory usage
|
2014-05-26 00:35:07 +04:00
|
|
|
++ mill (each vase milt) :: vase/metavase
|
2015-12-04 22:32:49 +03:00
|
|
|
++ milt {p+* q+*} :: metavase
|
|
|
|
++ monk (each ship {p+@tas q+@ta}) :: general identity
|
2014-06-22 09:49:10 +04:00
|
|
|
++ mold :: new kernel action
|
2015-12-04 22:32:49 +03:00
|
|
|
|* {a+_+(* *) b+_+(* *)} :: forward/reverse
|
|
|
|
_% {$pass p+path q+a} :: advance
|
|
|
|
{$slip p+a} :: lateral
|
|
|
|
{$sick p+b} :: lame refactoring
|
|
|
|
{$give p+b} :: retreat
|
2014-05-23 02:21:42 +04:00
|
|
|
== ::
|
2015-12-04 22:32:49 +03:00
|
|
|
++ muse {p+@tas q+duct r+arvo} :: sourced move
|
|
|
|
++ move {p+duct q+arvo} :: arvo move
|
|
|
|
++ ovum {p+wire q+curd} :: typeless ovum
|
|
|
|
++ pane (list {p+@tas q+vase}) :: kernel modules
|
|
|
|
++ pone (list {p+@tas q+vise}) :: kernel modules old
|
|
|
|
++ ship @p :: network identity
|
2015-05-09 04:08:18 +03:00
|
|
|
++ sink (trel bone ship path) :: subscription
|
2015-12-04 22:32:49 +03:00
|
|
|
++ sled _+ {(unit (set monk)) term beam} :: namespace function
|
2014-05-29 22:46:43 +04:00
|
|
|
(unit (unit cage)) ::
|
2015-12-04 22:32:49 +03:00
|
|
|
++ slad _+ {(unit (set monk)) term beam} :: undertyped
|
2015-03-04 04:05:41 +03:00
|
|
|
(unit (unit (cask))) ::
|
2015-12-04 22:32:49 +03:00
|
|
|
++ slut _+(* (unit (unit))) :: old namespace
|
2015-01-13 04:49:31 +03:00
|
|
|
++ vile :: reflexive constants
|
2015-12-04 22:32:49 +03:00
|
|
|
_: typ+type :: -:!>(*type)
|
|
|
|
duc+type :: -:!>(*duct)
|
|
|
|
pah+type :: -:!>(*path)
|
|
|
|
mev+type :: -:!>([%meta *vase])
|
2014-05-29 22:46:43 +04:00
|
|
|
== ::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ wire path :: event pretext
|
2015-05-09 04:08:18 +03:00
|
|
|
::::: hacks and tools
|
2015-06-12 20:56:30 +03:00
|
|
|
++ slod
|
2015-12-04 22:32:49 +03:00
|
|
|
|= sed+slad
|
2014-05-31 23:40:02 +04:00
|
|
|
^- slut
|
2015-12-04 22:32:49 +03:00
|
|
|
|= raw+*
|
2014-05-31 23:40:02 +04:00
|
|
|
=+ pux=((soft path) raw)
|
|
|
|
?~ pux ~
|
2015-12-04 22:32:49 +03:00
|
|
|
?. ?=({@ @ @ @ *} u.pux) ~
|
2014-05-31 23:40:02 +04:00
|
|
|
=+ :* hyr=(slay i.u.pux)
|
|
|
|
fal=(slay i.t.u.pux)
|
|
|
|
dyc=(slay i.t.t.u.pux)
|
|
|
|
ved=(slay i.t.t.t.u.pux)
|
|
|
|
tyl=t.t.t.t.u.pux
|
|
|
|
==
|
2015-12-04 22:32:49 +03:00
|
|
|
?. ?=({$~ $$ $tas @} hyr) ~
|
|
|
|
?. ?=({$~ $$ $p @} fal) ~
|
|
|
|
?. ?=({$~ $$ $tas @} dyc) ~
|
2014-05-31 23:40:02 +04:00
|
|
|
?. ?=(^ ved) ~
|
|
|
|
=+ ron=q.p.u.hyr
|
|
|
|
=+ bed=[[q.p.u.fal q.p.u.dyc (case p.u.ved)] (flop tyl)]
|
|
|
|
=+ bop=(sed ~ ron bed)
|
|
|
|
?~ bop ~
|
|
|
|
?~ u.bop [~ ~]
|
2015-02-27 09:35:41 +03:00
|
|
|
[~ ~ +.q.u.u.bop]
|
2013-09-29 00:21:18 +04:00
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:: section 3bE, Arvo core ::
|
|
|
|
::
|
2014-12-10 00:59:08 +03:00
|
|
|
++ vent :: vane core
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {lal+@tas vil+vile bud+vase sew+(pair worm vase)}
|
2014-12-03 20:36:42 +03:00
|
|
|
~% %vent +>+ ~
|
2013-09-29 00:21:18 +04:00
|
|
|
|%
|
|
|
|
++ ruck :: update vase
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {pax+path txt+@ta}
|
2013-09-29 00:21:18 +04:00
|
|
|
^+ +>
|
2014-05-09 04:47:34 +04:00
|
|
|
=+ arg=[~2000.1.1 0 =>(~ |+(* ~))]
|
2015-01-13 04:49:31 +03:00
|
|
|
=+ rig=(slym q.sew arg)
|
2014-05-22 22:36:37 +04:00
|
|
|
=+ rev=(slym (slap bud (rain pax txt)) bud)
|
2014-05-09 04:47:34 +04:00
|
|
|
=+ syg=(slym rev arg)
|
2015-01-21 05:33:01 +03:00
|
|
|
~| %load-lost
|
2015-01-13 04:49:31 +03:00
|
|
|
+>.$(q.sew (slam (slap syg [%cnzy %load]) (slap rig [%cnzy %stay])))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ wink :: deploy
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {now+@da eny+@ ski+slad}
|
2015-01-13 04:49:31 +03:00
|
|
|
=+ rig=(slym q.sew +<) :: activate vane
|
2014-12-03 20:36:42 +03:00
|
|
|
~% %wink +>+> ~
|
2013-12-09 01:23:03 +04:00
|
|
|
|%
|
2013-09-29 00:21:18 +04:00
|
|
|
++ doze
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {now+@da hen+duct}
|
2015-12-08 04:23:27 +03:00
|
|
|
^- (unit @da)
|
|
|
|
((hard (unit @da)) q:(slym (slap rig [%cnzy %doze]) +<))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-06-06 15:33:26 +04:00
|
|
|
++ slid
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {hed+mill tal+mill}
|
2014-06-06 15:33:26 +04:00
|
|
|
^- mill
|
|
|
|
?: &(?=(& -.hed) ?=(& -.tal))
|
|
|
|
[%& (slop p.hed p.tal)]
|
|
|
|
[%| [%cell p.p.hed p.p.tal] [q.p.hed q.p.tal]]
|
|
|
|
::
|
2014-06-07 05:03:36 +04:00
|
|
|
++ slix
|
2015-12-04 22:32:49 +03:00
|
|
|
|= hil+mill
|
2014-06-07 05:03:36 +04:00
|
|
|
^- mill
|
|
|
|
?- -.hil
|
2015-12-04 22:32:49 +03:00
|
|
|
{$&} [%& (slop [typ.vil p.p.hil] p.hil)]
|
|
|
|
{$|} [%| [%cell typ.vil p.p.hil] p.hil]
|
2014-06-07 05:03:36 +04:00
|
|
|
==
|
|
|
|
::
|
2015-06-12 20:56:30 +03:00
|
|
|
++ slur :: call gate on
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {gat+vase hil+mill}
|
2015-01-15 22:10:29 +03:00
|
|
|
^- (unit (pair vase worm))
|
2014-06-06 15:33:26 +04:00
|
|
|
=+ sam=(slot 6 gat)
|
2015-01-13 04:49:31 +03:00
|
|
|
=+ ^= hig
|
|
|
|
?- -.hil
|
2015-12-04 22:32:49 +03:00
|
|
|
{$&} (~(nest wa p.sew) p.sam p.p.hil)
|
|
|
|
{$|} (~(nets wa p.sew) p.sam p.p.hil)
|
2015-01-13 04:49:31 +03:00
|
|
|
==
|
2015-01-15 22:10:29 +03:00
|
|
|
?.(-.hig ~ `[(slym gat +>.hil) +.hig])
|
|
|
|
::
|
2015-12-04 22:32:49 +03:00
|
|
|
++ slur-a ~/(%slur-a |=({gat+vase hil+mill} =+(%a (slur gat hil))))
|
|
|
|
++ slur-b ~/(%slur-b |=({gat+vase hil+mill} =+(%b (slur gat hil))))
|
|
|
|
++ slur-c ~/(%slur-c |=({gat+vase hil+mill} =+(%c (slur gat hil))))
|
|
|
|
++ slur-d ~/(%slur-d |=({gat+vase hil+mill} =+(%d (slur gat hil))))
|
|
|
|
++ slur-e ~/(%slur-e |=({gat+vase hil+mill} =+(%e (slur gat hil))))
|
|
|
|
++ slur-f ~/(%slur-f |=({gat+vase hil+mill} =+(%f (slur gat hil))))
|
|
|
|
++ slur-g ~/(%slur-g |=({gat+vase hil+mill} =+(%g (slur gat hil))))
|
|
|
|
++ slur-z ~/(%slur-z |=({gat+vase hil+mill} =+(%z (slur gat hil))))
|
2015-01-15 22:10:29 +03:00
|
|
|
::
|
|
|
|
++ slur-pro :: profiling slur
|
|
|
|
~/ %slur-pro
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {lal+@tas gat+vase hil+mill}
|
2015-01-15 22:10:29 +03:00
|
|
|
?+ lal (slur-z gat hil)
|
2015-12-08 04:23:27 +03:00
|
|
|
$a (slur-a gat hil)
|
|
|
|
$b (slur-b gat hil)
|
|
|
|
$c (slur-c gat hil)
|
|
|
|
$d (slur-d gat hil)
|
|
|
|
$e (slur-e gat hil)
|
|
|
|
$f (slur-f gat hil)
|
|
|
|
$g (slur-g gat hil)
|
2015-01-15 22:10:29 +03:00
|
|
|
==
|
2014-05-26 00:35:07 +04:00
|
|
|
::
|
|
|
|
++ song :: reduce metacard
|
2014-12-03 20:36:42 +03:00
|
|
|
~/ %song ::
|
2015-12-04 22:32:49 +03:00
|
|
|
|= mex+vase :: mex: vase of card
|
2015-01-15 22:10:29 +03:00
|
|
|
^- (unit (pair mill worm)) ::
|
|
|
|
=^ hip p.sew (~(nell wa p.sew) p.mex) ::
|
2015-01-13 04:49:31 +03:00
|
|
|
?. hip ~ :: a card is a cell
|
2015-12-08 04:23:27 +03:00
|
|
|
?. ?=($meta -.q.mex) `[[%& mex] p.sew] :: ordinary card
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ tiv p.sew (~(slot wa p.sew) 3 mex) ::
|
|
|
|
=^ hip p.sew (~(nell wa p.sew) p.tiv) ::
|
2015-01-13 04:49:31 +03:00
|
|
|
?. hip ~ :: a vase is a cell
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ vax p.sew (~(slot wa p.sew) 2 tiv) ::
|
|
|
|
=^ hip p.sew (~(nest wa p.sew) typ.vil p.vax) ::
|
2015-01-13 04:49:31 +03:00
|
|
|
?. hip ~ :: vase head is type
|
2015-01-13 15:40:15 +03:00
|
|
|
%- biff ::
|
2015-12-04 22:32:49 +03:00
|
|
|
:_ |=(a+(pair milt worm) `[[%| p.a] q.a]) :: milt to mill
|
2014-06-06 15:33:26 +04:00
|
|
|
=+ mut=(milt q.tiv) :: card type, value
|
2015-01-15 22:10:29 +03:00
|
|
|
|- ^- (unit (pair milt worm)) ::
|
2015-12-04 22:32:49 +03:00
|
|
|
?. ?=({$meta p+* q+milt} q.mut) `[mut p.sew] :: ordinary metacard
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ hip p.sew (~(nets wa p.sew) mev.vil p.mut) ::
|
2015-01-13 04:49:31 +03:00
|
|
|
?. hip ~ :: meta-metacard
|
2014-09-24 05:03:20 +04:00
|
|
|
$(mut +.q.mut) :: descend into meta
|
2014-05-26 00:35:07 +04:00
|
|
|
::
|
2014-06-06 15:33:26 +04:00
|
|
|
++ sump :: vase to move
|
2014-12-03 20:36:42 +03:00
|
|
|
~/ %sump
|
2015-12-04 22:32:49 +03:00
|
|
|
|= wec+vase
|
2015-01-15 22:10:29 +03:00
|
|
|
^- (unit (pair move worm))
|
2014-06-06 15:33:26 +04:00
|
|
|
%+ biff ((soft duct) -.q.wec)
|
2015-12-04 22:32:49 +03:00
|
|
|
|= a+duct
|
2015-01-15 22:10:29 +03:00
|
|
|
%- bind :_ |=(b=(pair arvo worm) [`move`[a p.b] q.b])
|
2014-06-06 15:33:26 +04:00
|
|
|
=- ?- -.har
|
2015-12-08 05:04:19 +03:00
|
|
|
{$|} ~& [%dead-card p.har] ~ :: XX properly log?
|
|
|
|
{$&} (some p.har)
|
2014-06-06 15:33:26 +04:00
|
|
|
==
|
2015-01-15 22:10:29 +03:00
|
|
|
^= har ^- (each (pair arvo worm) term)
|
|
|
|
=^ caq p.sew (~(spot wa p.sew) 3 wec)
|
2015-12-08 04:23:27 +03:00
|
|
|
?+ q.caq [%| (cat 3 %funk (@tas q.caq))]
|
2014-05-26 08:32:37 +04:00
|
|
|
::
|
2015-12-04 22:32:49 +03:00
|
|
|
{$pass p+* q+@tas r+{p+@tas q+*}}
|
2014-06-06 15:33:26 +04:00
|
|
|
%- (bond |.([%| p.r.q.caq]))
|
2015-12-08 04:23:27 +03:00
|
|
|
%+ biff ((soft @) q.q.caq)
|
2015-12-04 22:32:49 +03:00
|
|
|
|= lal+@tas
|
2014-06-06 15:33:26 +04:00
|
|
|
?. ((sane %tas) lal) ~
|
2014-06-21 22:42:34 +04:00
|
|
|
%+ biff ((soft path) p.q.caq)
|
2015-12-04 22:32:49 +03:00
|
|
|
|= pax+path
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ yav p.sew (~(spot wa p.sew) 15 caq)
|
|
|
|
%+ bind (song yav)
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {hil+mill vel+worm}
|
2015-01-13 04:49:31 +03:00
|
|
|
[%& [%pass pax lal hil] vel]
|
2014-05-26 00:35:07 +04:00
|
|
|
::
|
2015-12-04 22:32:49 +03:00
|
|
|
{$give p+{p+@tas q+*}}
|
2014-06-06 15:33:26 +04:00
|
|
|
%- (bond |.([%| p.p.q.caq]))
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ yav p.sew (~(spot wa p.sew) 3 caq)
|
|
|
|
%+ bind (song yav)
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {hil+mill vel+worm}
|
2015-01-13 04:49:31 +03:00
|
|
|
[%& [%give hil] vel]
|
2014-05-26 00:35:07 +04:00
|
|
|
::
|
2015-12-04 22:32:49 +03:00
|
|
|
{$sick p+{p+@tas q+*}}
|
2014-06-06 15:33:26 +04:00
|
|
|
%- (bond |.([%| p.p.q.caq]))
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ yav p.sew (~(spot wa p.sew) 3 caq)
|
2015-06-12 20:56:30 +03:00
|
|
|
%+ bind (song yav)
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {hil+mill vel+worm}
|
2015-01-13 04:49:31 +03:00
|
|
|
[%& [%sick hil] vel]
|
2014-05-26 00:35:07 +04:00
|
|
|
::
|
2015-12-04 22:32:49 +03:00
|
|
|
{$slip p+@tas q+{p+@tas q+*}}
|
2014-06-06 15:33:26 +04:00
|
|
|
%- (bond |.([%| p.q.q.caq]))
|
2015-12-08 04:23:27 +03:00
|
|
|
%+ biff ((soft @) p.q.caq)
|
2015-12-04 22:32:49 +03:00
|
|
|
|= lal+@tas
|
2014-06-06 15:33:26 +04:00
|
|
|
?. ((sane %tas) lal) ~
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ yav p.sew (~(spot wa p.sew) 7 caq)
|
|
|
|
%+ bind (song yav)
|
2015-12-08 04:46:28 +03:00
|
|
|
|= {hil+mill vel+worm}
|
2015-01-13 04:49:31 +03:00
|
|
|
[%& [%slip lal hil] vel]
|
2014-05-26 00:35:07 +04:00
|
|
|
==
|
|
|
|
::
|
2014-06-06 15:33:26 +04:00
|
|
|
++ said :: vase to (list move)
|
2015-12-04 22:32:49 +03:00
|
|
|
|= vud+vase
|
2015-01-15 22:10:29 +03:00
|
|
|
|- ^- (pair (list move) worm)
|
2015-01-13 04:49:31 +03:00
|
|
|
?: =(~ q.vud) [~ p.sew]
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ hed p.sew (~(slot wa p.sew) 2 vud)
|
|
|
|
=^ tal p.sew (~(slot wa p.sew) 3 vud)
|
|
|
|
=^ mov p.sew (need (sump hed))
|
|
|
|
=^ moz p.sew $(vud tal)
|
2015-01-13 04:49:31 +03:00
|
|
|
[[mov moz] p.sew]
|
2014-05-26 00:35:07 +04:00
|
|
|
::
|
2014-06-06 15:33:26 +04:00
|
|
|
++ scry :: read namespace
|
2014-12-03 20:36:42 +03:00
|
|
|
~/ %scry
|
2015-12-04 22:32:49 +03:00
|
|
|
|= $^
|
|
|
|
_: fur+(unit (set monk))
|
|
|
|
ren+care
|
|
|
|
bed+beam
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
2015-03-04 04:05:41 +03:00
|
|
|
^- (unit (unit (cask)))
|
2014-10-05 03:20:55 +04:00
|
|
|
:: ~& [%arvo-scry ren bed]
|
2014-05-31 23:40:02 +04:00
|
|
|
=+ ^= old
|
|
|
|
:* fur
|
|
|
|
ren
|
|
|
|
p.bed
|
2015-01-13 04:49:31 +03:00
|
|
|
q.bed
|
2014-05-31 23:40:02 +04:00
|
|
|
`coin`[%$ r.bed]
|
|
|
|
(flop s.bed)
|
|
|
|
==
|
2015-03-04 04:05:41 +03:00
|
|
|
^- (unit (unit (cask)))
|
2014-05-31 23:40:02 +04:00
|
|
|
=+ pro=(slym (slap rig [%cnzy %scry]) old)
|
2014-06-01 00:22:49 +04:00
|
|
|
?~ q.pro ~
|
|
|
|
?~ +.q.pro [~ ~]
|
|
|
|
=+ dat=(slot 7 pro)
|
2015-02-27 09:35:41 +03:00
|
|
|
[~ ~ (mark -.q.dat) +.q.dat]
|
2014-05-25 02:02:28 +04:00
|
|
|
::
|
2014-06-06 15:33:26 +04:00
|
|
|
++ soar :: scrub vane
|
2015-12-04 22:32:49 +03:00
|
|
|
|= sev+vase
|
2014-05-26 00:35:07 +04:00
|
|
|
^- vase
|
2015-01-13 04:49:31 +03:00
|
|
|
?: &(=(-.q.q.sew -.q.sev) =(+>.q.q.sew +>.q.sev))
|
|
|
|
q.sew :: unchanged, use old
|
2014-10-31 20:56:33 +03:00
|
|
|
sev(+<.q [*@da *@ =>(~ |+(* ~))]) :: clear to stop leak
|
2014-05-26 00:35:07 +04:00
|
|
|
::
|
2014-05-25 02:02:28 +04:00
|
|
|
++ swim
|
2014-12-03 20:36:42 +03:00
|
|
|
~/ %swim
|
2015-12-04 22:32:49 +03:00
|
|
|
|= $^
|
|
|
|
_: org+@tas
|
|
|
|
pux+(unit wire)
|
|
|
|
hen+duct
|
|
|
|
hil+mill
|
2014-05-25 02:02:28 +04:00
|
|
|
==
|
2015-12-04 22:32:49 +03:00
|
|
|
^- {{p+(list move) q+worm} q+vase}
|
2015-01-13 15:40:15 +03:00
|
|
|
:: ~& [%swim-wyt `@ud`~(wyt in p.sew)]
|
2014-06-07 05:03:36 +04:00
|
|
|
=+ ^= pru
|
2014-05-25 02:02:28 +04:00
|
|
|
?~ pux
|
2015-12-08 04:23:27 +03:00
|
|
|
~| [%swim-call-vane lal ({term $~} +.p.hil)]
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ vax p.sew (~(slap wa p.sew) rig [%cnzy %call])
|
|
|
|
%^ slur-pro lal vax
|
2014-06-07 05:03:36 +04:00
|
|
|
(slid [%& duc.vil hen] (slix hil))
|
2015-12-08 04:23:27 +03:00
|
|
|
~| [%swim-take-vane lal ({term $~} +.p.hil)]
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ vax p.sew (~(slap wa p.sew) rig [%cnzy %take])
|
2015-06-12 20:56:30 +03:00
|
|
|
%^ slur-pro lal vax
|
2014-06-20 09:49:39 +04:00
|
|
|
;: slid
|
2015-06-12 20:56:30 +03:00
|
|
|
[%& pah.vil u.pux]
|
|
|
|
[%& duc.vil hen]
|
2014-06-20 09:49:39 +04:00
|
|
|
(slix (slid [%& [%cube org %atom %tas] org] hil))
|
|
|
|
==
|
2014-06-07 05:03:36 +04:00
|
|
|
?~ pru
|
2015-12-08 04:23:27 +03:00
|
|
|
~& [%swim-lost lal (@tas +>-.hil)]
|
2015-01-13 04:49:31 +03:00
|
|
|
[[~ p.sew] q.sew]
|
|
|
|
=^ pro p.sew (need pru)
|
2015-01-15 22:10:29 +03:00
|
|
|
=^ moz p.sew (~(slap wa p.sew) pro [%cnzy %p])
|
|
|
|
=^ vem p.sew (~(slap wa p.sew) pro [%cnzy %q])
|
|
|
|
[(said moz) (soar vem)]
|
2013-09-29 00:21:18 +04:00
|
|
|
--
|
|
|
|
--
|
|
|
|
::
|
2014-04-23 21:02:36 +04:00
|
|
|
++ vint :: create vane
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {lal+@tas vil+vile bud+vase pax+path txt+@ta} ::
|
2015-01-15 22:10:29 +03:00
|
|
|
(vent lal vil bud *worm (slym (slap bud (rain pax txt)) bud))
|
2014-04-23 21:02:36 +04:00
|
|
|
::
|
|
|
|
++ viol :: vane tools
|
2015-12-04 22:32:49 +03:00
|
|
|
|= but+type
|
2013-09-29 00:21:18 +04:00
|
|
|
^- vile
|
2015-12-04 22:32:49 +03:00
|
|
|
=+ pal=|=(a+@t ^-(type (~(play ut but) (vice a))))
|
2014-10-31 06:13:40 +03:00
|
|
|
:* typ=(pal '*type')
|
|
|
|
duc=(pal '*duct')
|
|
|
|
pah=(pal '*path')
|
2015-12-08 04:23:27 +03:00
|
|
|
mev=(pal '*{$meta $vase}')
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ is :: operate in time
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {vil+vile eny+@ bud+vase niz+(pair worm (list {p+@tas q+vase}))}
|
2013-12-09 01:23:03 +04:00
|
|
|
|_ now=@da
|
|
|
|
++ beck
|
2015-02-27 09:35:41 +03:00
|
|
|
^- slad
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {fur+(unit (set monk)) ron+term bed+beam}
|
2015-03-04 04:05:41 +03:00
|
|
|
^- (unit (unit (cask)))
|
2014-05-31 23:40:02 +04:00
|
|
|
=> .(fur ?^(fur fur `[[%& p.bed] ~ ~])) :: XX heinous
|
2014-06-07 05:03:36 +04:00
|
|
|
=+ lal=(end 3 1 ron)
|
2014-05-31 23:40:02 +04:00
|
|
|
=+ ren=(care (rsh 3 1 ron))
|
2015-03-04 04:05:41 +03:00
|
|
|
|- ^- (unit (unit (cask)))
|
2015-01-13 04:49:31 +03:00
|
|
|
?~ q.niz ~
|
|
|
|
?. =(lal p.i.q.niz) $(q.niz t.q.niz)
|
|
|
|
%- scry:(wink:(vent lal vil bud p.niz q.i.q.niz) now (shax now) ..^$)
|
2014-06-01 00:22:49 +04:00
|
|
|
[fur ren bed]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ dink :: vase by char
|
2015-12-04 22:32:49 +03:00
|
|
|
|= din+@tas ^- vase
|
2015-01-13 04:49:31 +03:00
|
|
|
?~(q.niz !! ?:(=(din p.i.q.niz) q.i.q.niz $(q.niz t.q.niz)))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-05-26 00:35:07 +04:00
|
|
|
++ dint :: input routing
|
2015-12-04 22:32:49 +03:00
|
|
|
|= hap+path ^- @tas
|
2013-09-29 00:21:18 +04:00
|
|
|
?+ hap !!
|
2015-12-04 22:32:49 +03:00
|
|
|
{@ $ames *} %a
|
|
|
|
{@ $boat *} %c
|
|
|
|
{@ $newt *} %a
|
|
|
|
{@ $sync *} %c
|
|
|
|
{@ $term *} %d
|
|
|
|
{@ $http *} %e
|
|
|
|
{@ $behn *} %b
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ doos :: sleep until
|
2015-12-08 04:23:27 +03:00
|
|
|
|= hap+path ^- (unit @da)
|
2014-06-07 05:03:36 +04:00
|
|
|
=+ lal=(dint hap)
|
2015-01-13 04:49:31 +03:00
|
|
|
(doze:(wink:(vent lal vil bud p.niz (dink lal)) now 0 beck) now [hap ~])
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-05-25 02:02:28 +04:00
|
|
|
++ hurl :: start loop
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {lac+? ovo+ovum}
|
2014-06-06 07:41:47 +04:00
|
|
|
~? &(!lac !=(%belt -.q.ovo)) [%unix -.q.ovo p.ovo]
|
2015-12-04 22:32:49 +03:00
|
|
|
^- {p+(list ovum) q+(pair worm (list {p+@tas q+vase}))}
|
2014-05-24 01:58:12 +04:00
|
|
|
?> ?=(^ p.ovo)
|
2014-06-06 07:41:47 +04:00
|
|
|
%+ kick lac
|
2014-06-06 02:14:49 +04:00
|
|
|
:~ :* i.p.ovo
|
|
|
|
~
|
2014-06-24 21:32:59 +04:00
|
|
|
:^ %pass t.p.ovo
|
2014-06-21 22:42:34 +04:00
|
|
|
(dint p.ovo)
|
2014-06-06 02:14:49 +04:00
|
|
|
:+ %&
|
|
|
|
[%cell [%cube %soft [%atom %tas]] %noun]
|
|
|
|
[%soft q.ovo]
|
|
|
|
==
|
|
|
|
==
|
2014-05-24 01:58:12 +04:00
|
|
|
::
|
2014-05-27 02:59:16 +04:00
|
|
|
++ race :: take
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {org+@tas lal+@tas pux+(unit wire) hen+duct hil+mill ves+vase}
|
2015-12-08 04:46:28 +03:00
|
|
|
^- {p+{p+(list move) q+worm} q+vase}
|
2015-01-13 04:49:31 +03:00
|
|
|
=+ ven=(vent lal vil bud [p.niz ves])
|
2014-05-31 23:40:02 +04:00
|
|
|
=+ win=(wink:ven now (shax now) beck)
|
2014-06-20 09:49:39 +04:00
|
|
|
(swim:win org pux hen hil)
|
2014-05-25 02:02:28 +04:00
|
|
|
::
|
|
|
|
++ fire :: execute
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {org+term lal+term pux+(unit wire) hen+duct hil+mill}
|
|
|
|
?: &(?=(^ pux) ?=($~ hen))
|
2015-01-13 04:49:31 +03:00
|
|
|
[[[[lal u.pux] (curd +>.hil)]~ ~] niz]
|
|
|
|
=+ naf=q.niz
|
2015-12-04 22:32:49 +03:00
|
|
|
|- ^- {{p+(list ovum) q+(list muse)} __(niz)}
|
2015-01-13 04:49:31 +03:00
|
|
|
?~ naf [[~ ~] [p.niz ~]]
|
2014-05-25 02:02:28 +04:00
|
|
|
?. =(lal p.i.naf)
|
|
|
|
=+ tuh=$(naf t.naf)
|
2015-01-13 04:49:31 +03:00
|
|
|
[-.tuh [+<.tuh [i.naf +>.tuh]]]
|
2014-06-20 09:49:39 +04:00
|
|
|
=+ fiq=(race org lal pux hen hil q.i.naf)
|
2015-12-05 02:59:29 +03:00
|
|
|
[[~ (turn p.p.fiq |=(a+move [lal a]))] [q.p.fiq [[p.i.naf q.fiq] t.naf]]]
|
2014-05-25 02:02:28 +04:00
|
|
|
::
|
|
|
|
++ jack :: dispatch card
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {lac+? gum+muse}
|
2015-12-08 04:46:28 +03:00
|
|
|
^- {{p+(list ovum) q+(list muse)} __(niz)}
|
2015-01-19 17:25:52 +03:00
|
|
|
:: =. lac |(lac ?=(?(%g %f) p.gum))
|
2015-12-08 04:23:27 +03:00
|
|
|
:: =. lac &(lac !?=($b p.gum))
|
2014-06-20 09:49:39 +04:00
|
|
|
%+ fire
|
2015-06-12 20:56:30 +03:00
|
|
|
p.gum
|
2014-05-25 02:02:28 +04:00
|
|
|
?- -.r.gum
|
2015-12-08 04:23:27 +03:00
|
|
|
$pass
|
2014-06-24 21:32:59 +04:00
|
|
|
~? &(!lac !=(%$ p.gum))
|
2014-06-25 02:00:07 +04:00
|
|
|
:^ %pass [p.gum p.q.r.gum]
|
2015-12-08 04:23:27 +03:00
|
|
|
[(@tas +>-.q.q.r.gum) p.r.gum]
|
2014-06-25 02:00:07 +04:00
|
|
|
q.gum
|
2014-06-22 09:20:42 +04:00
|
|
|
[p.q.r.gum ~ [[p.gum p.r.gum] q.gum] q.q.r.gum]
|
2014-05-25 02:02:28 +04:00
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$give
|
2014-05-25 02:34:00 +04:00
|
|
|
?> ?=(^ q.gum)
|
2014-12-11 18:49:01 +03:00
|
|
|
?. ?=(^ i.q.gum)
|
|
|
|
~& [%jack-bad-duct q.gum]
|
|
|
|
~& [%jack-bad-card +>-.p.r.gum]
|
|
|
|
!!
|
2014-06-06 07:41:47 +04:00
|
|
|
~? &(!lac |(!=(%blit +>-.p.r.gum) !=(%d p.gum)))
|
2015-12-08 04:23:27 +03:00
|
|
|
[%give p.gum (@tas +>-.p.r.gum) `duct`q.gum]
|
2014-05-25 02:34:00 +04:00
|
|
|
[i.i.q.gum [~ t.i.q.gum] t.q.gum p.r.gum]
|
2014-05-25 02:02:28 +04:00
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$slip
|
|
|
|
~? !lac [%slip p.gum (@tas +>-.q.p.r.gum) q.gum]
|
2014-06-22 09:20:42 +04:00
|
|
|
[p.p.r.gum ~ q.gum q.p.r.gum]
|
2014-05-25 02:02:28 +04:00
|
|
|
::
|
2015-12-08 04:23:27 +03:00
|
|
|
$sick
|
2014-05-25 02:34:00 +04:00
|
|
|
?> ?=(^ q.gum)
|
2014-05-25 02:02:28 +04:00
|
|
|
?> ?=(^ i.q.gum)
|
2015-12-08 04:23:27 +03:00
|
|
|
~? !lac [%sick p.gum (@tas +>-.p.r.gum) `duct`q.gum]
|
2014-05-25 02:34:00 +04:00
|
|
|
[i.i.q.gum ?~(t.i.q.gum ~ [~ t.i.q.gum]) t.q.gum p.r.gum]
|
2014-05-25 02:02:28 +04:00
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
2014-05-24 02:04:50 +04:00
|
|
|
++ kick :: new main loop
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {lac+? mor+(list muse)}
|
|
|
|
=| ova+(list ovum)
|
|
|
|
|- ^- {p+(list ovum) q+(pair worm (list {p+@tas q+vase}))}
|
2015-01-13 15:40:15 +03:00
|
|
|
?~ mor [(flop ova) niz]
|
2015-01-13 04:49:31 +03:00
|
|
|
=^ nyx niz (jack lac i.mor)
|
2015-04-30 01:48:45 +03:00
|
|
|
$(ova (weld p.nyx ova), mor (weld q.nyx t.mor))
|
2013-09-29 00:21:18 +04:00
|
|
|
--
|
|
|
|
--
|
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
:::::: :::::: Postface ::::::
|
|
|
|
:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
2014-01-06 02:10:49 +04:00
|
|
|
=+ pit=`vase`!>(.) ::
|
|
|
|
=+ bud=pit :: becomes tang
|
2014-05-29 22:46:43 +04:00
|
|
|
=+ vil=(viol p.bud) :: cached reflexives
|
2015-12-04 22:32:49 +03:00
|
|
|
=| $^
|
|
|
|
_: lac+? :: laconic bit
|
|
|
|
eny+@ :: entropy
|
|
|
|
niz+(pair worm (list {p+@tas q+vase})) :: modules
|
2014-06-06 07:41:47 +04:00
|
|
|
== ::
|
2013-09-29 00:21:18 +04:00
|
|
|
=< |%
|
2015-12-04 22:32:49 +03:00
|
|
|
++ come |= {@ (list ovum) pone} :: 11
|
2015-12-08 04:46:28 +03:00
|
|
|
^- {(list ovum) __(+>)}
|
2013-09-29 00:21:18 +04:00
|
|
|
~& %hoon-come
|
|
|
|
=^ rey +>+ (^come +<)
|
|
|
|
[rey +>.$]
|
2015-12-04 22:32:49 +03:00
|
|
|
++ keep |=(* (^keep ((hard {@da path}) +<))) :: 4
|
|
|
|
++ load |= {@ (list ovum) pane} :: 86
|
|
|
|
^- {(list ovum) __(+>)}
|
2013-09-29 00:21:18 +04:00
|
|
|
~& %hoon-load
|
|
|
|
=^ rey +>+ (^load +<)
|
|
|
|
[rey +>.$]
|
2015-12-04 22:32:49 +03:00
|
|
|
++ peek |=(* (^peek ((hard {@da path}) +<))) :: 87
|
2013-09-29 00:21:18 +04:00
|
|
|
++ poke |= * :: 42
|
2015-12-08 04:46:28 +03:00
|
|
|
^- {(list ovum) *}
|
2015-12-04 22:32:49 +03:00
|
|
|
=> .(+< ((hard {now+@da ovo+ovum}) +<))
|
2014-06-06 07:41:47 +04:00
|
|
|
?: =(%verb -.q.ovo)
|
|
|
|
[~ +>.$(lac !lac)]
|
2015-12-04 22:32:49 +03:00
|
|
|
?: ?=($veer -.q.ovo)
|
2014-05-31 00:57:49 +04:00
|
|
|
[~ +>.$(+ (veer now q.ovo))]
|
2013-09-29 00:21:18 +04:00
|
|
|
=^ ova +>+ (^poke now ovo)
|
2015-12-04 22:32:49 +03:00
|
|
|
|- ^- {(list ovum) *}
|
2013-09-29 00:21:18 +04:00
|
|
|
?~ ova
|
|
|
|
[~ +>.^$]
|
2015-12-04 22:32:49 +03:00
|
|
|
?: ?=($verb -.q.i.ova)
|
2014-06-06 07:41:47 +04:00
|
|
|
$(ova t.ova, lac !lac)
|
2015-12-04 22:32:49 +03:00
|
|
|
?: ?=($veer -.q.i.ova)
|
2014-05-31 00:57:49 +04:00
|
|
|
$(ova t.ova, +>+.^$ (veer now q.i.ova))
|
2015-12-04 22:32:49 +03:00
|
|
|
?: ?=($vega -.q.i.ova)
|
2014-01-06 03:38:34 +04:00
|
|
|
(vega now t.ova (path +.q.i.ova))
|
2015-12-04 22:32:49 +03:00
|
|
|
?: ?=($mass -.q.i.ova)
|
2015-05-07 05:25:41 +03:00
|
|
|
=+ avo=$(ova t.ova)
|
|
|
|
:_ +.avo
|
|
|
|
:_ -.avo
|
|
|
|
%= i.ova
|
|
|
|
q.q
|
2015-05-13 00:18:34 +03:00
|
|
|
:- %userspace
|
2015-05-07 05:25:41 +03:00
|
|
|
:- %|
|
2015-05-13 00:18:34 +03:00
|
|
|
:~ hoon/`pit
|
|
|
|
zuse/`bud
|
|
|
|
hoon-cache/`p.niz
|
|
|
|
q.q.i.ova
|
|
|
|
dot/`.
|
2015-05-07 05:25:41 +03:00
|
|
|
==
|
|
|
|
==
|
2013-09-29 00:21:18 +04:00
|
|
|
=+(avo=$(ova t.ova) [[i.ova -.avo] +.avo])
|
2015-12-08 04:23:27 +03:00
|
|
|
++ wish |=(* (^wish ((hard @ta) +<))) :: 20
|
2013-09-29 00:21:18 +04:00
|
|
|
--
|
|
|
|
|%
|
|
|
|
++ come :: load incompatible
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {yen+@ ova+(list ovum) nyf+pone}
|
2013-09-29 00:21:18 +04:00
|
|
|
^+ [ova +>]
|
2015-12-08 04:46:28 +03:00
|
|
|
(load yen ova (turn nyf |=({a+@tas b+vise} [a (slim b)])))
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ keep :: wakeup delay
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {now+@da hap+path}
|
2015-12-08 04:23:27 +03:00
|
|
|
=> .(+< ((hard {now+@da hap+path}) +<))
|
2015-01-13 04:49:31 +03:00
|
|
|
(~(doos (is vil eny bud niz) now) hap)
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ load :: load compatible
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {yen+@ ova+(list ovum) nyf+pane}
|
2013-09-29 00:21:18 +04:00
|
|
|
^+ [ova +>]
|
|
|
|
=: eny yen
|
2015-01-13 04:49:31 +03:00
|
|
|
q.niz nyf
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
|- ^+ [ova +>.^$]
|
|
|
|
?~ ova
|
|
|
|
[~ +>.^$]
|
2015-12-08 04:23:27 +03:00
|
|
|
?: ?=($verb -.q.i.ova)
|
2014-06-06 07:41:47 +04:00
|
|
|
$(ova t.ova, lac !lac)
|
2015-12-08 04:23:27 +03:00
|
|
|
?: ?=($veer -.q.i.ova)
|
2014-10-31 20:56:33 +03:00
|
|
|
$(ova t.ova, +>.^$ (veer *@da q.i.ova))
|
2013-09-29 00:21:18 +04:00
|
|
|
=+(avo=$(ova t.ova) [[i.ova -.avo] +.avo])
|
|
|
|
::
|
|
|
|
++ peek :: external inspect
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {now+@da hap+path}
|
2013-09-29 00:21:18 +04:00
|
|
|
^- (unit)
|
2014-07-19 04:51:22 +04:00
|
|
|
?~ hap [~ hoon]
|
2015-01-13 04:49:31 +03:00
|
|
|
=+ rob=((slod ~(beck (is vil eny bud niz) now)) hap)
|
2014-05-02 03:33:15 +04:00
|
|
|
?~ rob ~
|
|
|
|
?~ u.rob ~
|
|
|
|
[~ u.u.rob]
|
2013-09-29 00:21:18 +04:00
|
|
|
::
|
|
|
|
++ poke :: external apply
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {now+@da ovo+ovum}
|
2014-04-14 22:01:18 +04:00
|
|
|
=. eny (mix eny (shax now))
|
2014-05-29 23:06:08 +04:00
|
|
|
:: ~& [%poke -.q.ovo]
|
2015-12-04 22:32:49 +03:00
|
|
|
^- {(list ovum) __(+>)}
|
2015-01-13 15:40:15 +03:00
|
|
|
=^ zef niz
|
2015-01-13 04:49:31 +03:00
|
|
|
(~(hurl (is vil eny bud niz) now) lac ovo)
|
2013-09-29 00:21:18 +04:00
|
|
|
[zef +>.$]
|
|
|
|
::
|
2014-01-06 03:38:34 +04:00
|
|
|
++ vega :: reboot kernel
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {now+@da ova+(list ovum) hap+path}
|
|
|
|
^- {p+(list ovum) q+*}
|
2014-01-06 03:38:34 +04:00
|
|
|
=+ pax=(weld hap `path`[%hoon ~])
|
|
|
|
~& [%vega-start hap]
|
2015-12-08 04:23:27 +03:00
|
|
|
=+ src=((hard @t) (need (peek now cx/pax)))
|
2014-01-06 03:38:34 +04:00
|
|
|
=+ saz=(shax src)
|
2014-04-07 21:16:57 +04:00
|
|
|
=+ gen=(rain hap src)
|
2014-01-06 03:38:34 +04:00
|
|
|
~& %vega-parsed
|
|
|
|
=+ ken=.*(0 q:(~(mint ut %noun) %noun gen))
|
2014-01-06 04:36:29 +04:00
|
|
|
=+ ^= nex
|
|
|
|
=+ gat=.*(ken .*(ken [0 87]))
|
2015-12-04 22:32:49 +03:00
|
|
|
(need ((hard (unit @)) .*([-.gat [[now ~] +>.gat]] -.gat)))
|
2014-07-19 04:51:22 +04:00
|
|
|
~& [%vega-compiled hoon nex]
|
|
|
|
?> (lte nex hoon)
|
|
|
|
=+ gat=.*(ken .*(ken [0 ?:(=(nex hoon) 86 11)]))
|
2015-01-13 04:49:31 +03:00
|
|
|
=+ sam=[eny ova q.niz]
|
2014-01-06 03:38:34 +04:00
|
|
|
=+ raw=.*([-.gat [sam +>.gat]] -.gat)
|
2014-02-15 05:35:22 +04:00
|
|
|
[[[~ %vega hap] ((list ovum) -.raw)] +.raw]
|
2014-01-06 03:38:34 +04:00
|
|
|
::
|
2013-09-29 00:21:18 +04:00
|
|
|
++ veer :: install vane/tang
|
2015-12-04 22:32:49 +03:00
|
|
|
|= {now+@da fav+curd}
|
|
|
|
=> .(fav ((hard {$veer lal=@ta pax=path txt=@t}) fav))
|
2014-05-31 00:57:49 +04:00
|
|
|
?: =(%$ lal.fav)
|
|
|
|
~& [%tang pax.fav `@p`(mug txt.fav)]
|
|
|
|
=+ gen=(rain pax.fav txt.fav)
|
2013-09-29 00:21:18 +04:00
|
|
|
=+ vax=(slap pit gen)
|
|
|
|
+>.$(bud vax)
|
|
|
|
%_ +>
|
2015-01-13 04:49:31 +03:00
|
|
|
q.niz
|
|
|
|
|- ^+ q.niz
|
|
|
|
?~ q.niz
|
2014-05-31 00:57:49 +04:00
|
|
|
~& [%vane `@tas`lal.fav pax.fav `@p`(mug txt.fav)]
|
2015-01-13 04:49:31 +03:00
|
|
|
[[lal.fav q.sew:(vint lal.fav vil bud pax.fav txt.fav)] q.niz]
|
|
|
|
?. =(lal.fav p.i.q.niz)
|
|
|
|
[i.q.niz $(q.niz t.q.niz)]
|
2014-05-31 00:57:49 +04:00
|
|
|
~& [%vane `@tas`lal.fav pax.fav `@p`(mug txt.fav)]
|
2015-01-13 04:49:31 +03:00
|
|
|
:_ t.q.niz
|
|
|
|
:- p.i.q.niz
|
|
|
|
q.sew:(ruck:(vent lal.fav vil bud [p.niz q.i.q.niz]) pax.fav txt.fav)
|
2013-09-29 00:21:18 +04:00
|
|
|
==
|
|
|
|
::
|
|
|
|
++ wish :: external compute
|
2015-12-04 22:32:49 +03:00
|
|
|
|= txt+@
|
2013-09-29 00:21:18 +04:00
|
|
|
q:(slap bud (ream txt))
|
|
|
|
--
|
2014-01-04 11:28:16 +04:00
|
|
|
. ==
|