mirror of
https://github.com/urbit/shrub.git
synced 2025-01-04 10:32:34 +03:00
Merge branch 'cc-release' of https://github.com/urbit/arvo into jaelwomb
This commit is contained in:
commit
10533be44b
@ -95,7 +95,7 @@
|
||||
++ move (pair bone card) :: user-level move
|
||||
++ sign ::
|
||||
$% {$made p/@uvH q/gage} ::
|
||||
{$unto p/cuft} ::
|
||||
{$unto p/cuft:gall} ::
|
||||
== ::
|
||||
-- ::
|
||||
!: ::
|
||||
@ -908,7 +908,7 @@
|
||||
==
|
||||
::
|
||||
++ he-unto :: result from behn
|
||||
|= {way/wire cit/cuft}
|
||||
|= {way/wire cit/cuft:gall}
|
||||
^+ +>
|
||||
?. ?=($coup -.cit)
|
||||
~& [%strange-unto cit]
|
||||
|
@ -6,6 +6,7 @@
|
||||
:: :: ::
|
||||
:::: :::::: ames structures
|
||||
:: :: ::
|
||||
=, crypto
|
||||
|% ::
|
||||
++ bait {p/skin q/@ud r/dove} :: fmt nrecvd spec
|
||||
++ bath :: per friend
|
||||
|
@ -11,6 +11,8 @@
|
||||
::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|= pit/vase
|
||||
=, ^differ
|
||||
=, differ
|
||||
=> |%
|
||||
++ cane :: change set
|
||||
$: new/(map path lobe) :: new files
|
||||
@ -29,7 +31,7 @@
|
||||
++ kiss kiss-clay :: in request ->$
|
||||
++ mery :: merge state
|
||||
$: sor/(pair ship desk) :: merge source
|
||||
hen/duct :: formal source
|
||||
hen/duct :: formal cause
|
||||
gem/germ :: strategy
|
||||
wat/wait :: waiting on
|
||||
cas/case :: ali's case
|
||||
|
@ -2,6 +2,7 @@
|
||||
:: dill (4d), terminal handling
|
||||
::
|
||||
|= pit/vase
|
||||
=, gall
|
||||
=> |% :: interface tiles
|
||||
++ gill (pair ship term) :: general contact
|
||||
-- ::
|
||||
|
@ -2,6 +2,8 @@
|
||||
!? 164
|
||||
::::
|
||||
|= pit/vase
|
||||
=, gall
|
||||
=, crypto
|
||||
=> =~
|
||||
|% :: interfaces
|
||||
++ gift gift-eyre :: out result <-$
|
||||
@ -1112,7 +1114,7 @@
|
||||
{$txt $robots $~}
|
||||
:- ~
|
||||
%^ resp 200 text+/plain
|
||||
%- role
|
||||
%- role:differ
|
||||
:~ 'User-agent: *'
|
||||
'Disallow: '
|
||||
==
|
||||
|
@ -3,6 +3,9 @@
|
||||
!? 164
|
||||
::::
|
||||
|= pit/vase
|
||||
=, ^differ
|
||||
=, differ
|
||||
=, gall
|
||||
=> =~
|
||||
:: structures
|
||||
|%
|
||||
|
@ -3,6 +3,7 @@
|
||||
::::
|
||||
|= pit/vase
|
||||
=> =~
|
||||
=, gall
|
||||
|% :::::::::::::::::::::::::::::::::::::::::::::::::::::: rest of arvo
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
++ volt ?($low $high) :: voltage
|
||||
@ -42,7 +43,7 @@
|
||||
++ gest :: subscriber data
|
||||
$: sup/bitt :: incoming subscribers
|
||||
neb/boat :: outgoing subscribers
|
||||
qel/(map bone @ud) :: queue meter
|
||||
qel/(map bone @ud) :: queue meter
|
||||
== ::
|
||||
++ mast :: ship state
|
||||
$: sys/duct :: system duct
|
||||
@ -127,7 +128,7 @@
|
||||
%_(+> moz :_(moz [hen %pass pax noh]))
|
||||
::
|
||||
++ mo-give
|
||||
|= git/gift-gall
|
||||
|= git/gift
|
||||
%_(+> moz :_(moz [hen %give git]))
|
||||
::
|
||||
++ mo-okay :: valid agent core
|
||||
@ -1201,9 +1202,9 @@
|
||||
--
|
||||
++ call :: request
|
||||
~% %gall-call +> ~
|
||||
|= {hen/duct hic/(hypo (hobo kiss-gall))}
|
||||
|= {hen/duct hic/(hypo (hobo kiss))}
|
||||
^+ [p=*(list move) q=..^$]
|
||||
=> .(q.hic ?.(?=($soft -.q.hic) q.hic ((hard kiss-gall) p.q.hic)))
|
||||
=> .(q.hic ?.(?=($soft -.q.hic) q.hic ((hard kiss) p.q.hic)))
|
||||
?- -.q.hic
|
||||
$conf
|
||||
?. (~(has by pol.all) p.p.q.hic)
|
||||
|
@ -5460,7 +5460,7 @@
|
||||
{$pin p/twig q/twig} :: =+ q w/[p subject]
|
||||
{$tow p/(list twig)} :: =~ twig stack
|
||||
{$aka p/term q/twig r/twig} :: =* r w/alias p/q
|
||||
{$use p/wing q/twig} :: =, overlap
|
||||
{$use p/twig q/twig} :: =, overload p in q
|
||||
:: :::::: conditionals
|
||||
{$or p/(list twig)} :: ?| loobean or
|
||||
{$case p/wing q/(list (pair twig twig))} :: ?- pick case in q
|
||||
@ -6424,6 +6424,7 @@
|
||||
%vet vet
|
||||
%fab fab
|
||||
%burn burn
|
||||
%busk busk
|
||||
%buss buss
|
||||
%crop crop
|
||||
%duck duck
|
||||
@ -6433,9 +6434,10 @@
|
||||
%emin emin
|
||||
%emul emul
|
||||
%felt felt
|
||||
%fond fond
|
||||
%fine fine
|
||||
%fire fire
|
||||
%fish fish
|
||||
%fond fond
|
||||
%fund fund
|
||||
%funk funk
|
||||
%fuse fuse
|
||||
@ -6486,6 +6488,14 @@
|
||||
$void ~
|
||||
==
|
||||
::
|
||||
++ busk
|
||||
~/ %busk
|
||||
|= gen/twig
|
||||
^- span
|
||||
?: ?=({$face ^ *} sut)
|
||||
[%face [p.p.sut [gen q.p.sut]] q.sut]
|
||||
[%face [~ [gen ~]] sut]
|
||||
::
|
||||
++ buss
|
||||
~/ %buss
|
||||
|= {cog/term gen/twig}
|
||||
@ -6693,8 +6703,8 @@
|
||||
|% +- $
|
||||
=> +<
|
||||
|%
|
||||
++ pord |*(* (form +< *nock)) :: wrap mint formula
|
||||
++ rosh |*(* (form +< *(list pock))) :: wrap mint changes
|
||||
++ pord |*(* (form +< *nock)) :: wrap mint formula
|
||||
++ rosh |*(* (form +< *(list pock))) :: wrap mint changes
|
||||
++ fleg _(pord *bath) :: legmatch + code
|
||||
++ fram _(pord *claw) :: armmatch +
|
||||
++ foat _(rosh *bath) :: leg with changes
|
||||
@ -6979,13 +6989,13 @@
|
||||
|- ^- pony
|
||||
?~ q.p.sut
|
||||
^$(sut q.sut, lon [~ lon])
|
||||
=+ tiv=(mint %noun i.q.p.sut)
|
||||
=+ tiv=(mint(sut q.sut) %noun i.q.p.sut)
|
||||
=+ fid=^$(sut p.tiv, lon ~, axe 1, gil ~)
|
||||
?~ fid ~
|
||||
?: ?=({$| $& *} fid)
|
||||
$(q.p.sut t.q.p.sut, p.heg p.p.fid)
|
||||
=+ vat=(fine `port`?-(-.fid $& fid, $| [%| p.p.fid]))
|
||||
[%| %| p.vat (comb q.vat (comb [%0 axe] q.tiv))]
|
||||
[%| %| p.vat (comb (comb [%0 axe] q.tiv) q.vat)]
|
||||
--
|
||||
::
|
||||
{$fork *}
|
||||
@ -7027,6 +7037,7 @@
|
||||
(find way u.hup)
|
||||
::
|
||||
++ fine
|
||||
~/ %fine
|
||||
|= tor/port
|
||||
^- (pair span nock)
|
||||
?- -.tor
|
||||
@ -7243,6 +7254,9 @@
|
||||
::
|
||||
{$aka *}
|
||||
$(gen r.gen, sut (buss p.gen q.gen))
|
||||
::
|
||||
{$use *}
|
||||
$(gen q.gen, sut (busk p.gen))
|
||||
::
|
||||
{$if *}
|
||||
=+ nor=$(gen p.gen, gol bool)
|
||||
@ -9049,6 +9063,7 @@
|
||||
(word %aka expl)
|
||||
(word %pin expb)
|
||||
(word %tow expi)
|
||||
(word %use expb)
|
||||
::
|
||||
(word %or exps)
|
||||
(word %if expc)
|
||||
@ -9139,6 +9154,7 @@
|
||||
['>' (rune gar %per expb)]
|
||||
['-' (rune hep %nip expb)]
|
||||
['*' (rune tar %aka expl)]
|
||||
[',' (rune com %use expb)]
|
||||
['+' (rune lus %pin expb)]
|
||||
['~' (rune sig %tow expi)]
|
||||
==
|
||||
|
230
arvo/jael.hoon
230
arvo/jael.hoon
@ -13,236 +13,12 @@
|
||||
:: - nice features:
|
||||
:: - scry namespace
|
||||
:: - task for converting invites to tickets
|
||||
::
|
||||
:: - restructuring
|
||||
:: - move section 0 to %zuse/%york once ready
|
||||
::::
|
||||
:: ::::
|
||||
:::: # 0 :: public structures
|
||||
:: ::::
|
||||
|= pit/vase
|
||||
=> |%
|
||||
:: ::
|
||||
:::: ## 0.a :: certificates
|
||||
:: ::::
|
||||
:: the urbit meta-certificate (++will) is a sequence
|
||||
:: of certificates (++cert). each cert in a will
|
||||
:: revokes and replaces the previous cert. the
|
||||
:: version number of a ship is a ++life.
|
||||
::
|
||||
:: the deed contains an ++arms, an optional definition
|
||||
:: of cosmetic identity; a semi-trusted parent,
|
||||
:: which signs the initial certificate and provides
|
||||
:: routing services; and a dirty bit. if the dirty
|
||||
:: bit is set, the new life of this ship may have
|
||||
:: lost information that the old life had.
|
||||
::::
|
||||
++ arms (map chip (pair @ta @t)) :: stated identity
|
||||
++ bull :: cert metadata
|
||||
$: dad/ship :: parent
|
||||
dob/? :: & clean, | dirty
|
||||
nym/arms :: identity strings
|
||||
== ::
|
||||
++ cert (tale deed) :: signed deed
|
||||
++ chip :: standard identity
|
||||
$? $giv :: given name
|
||||
$sur :: surname
|
||||
$had :: fictitious name
|
||||
$mid :: middle name
|
||||
== ::
|
||||
++ deed :: certificate deed
|
||||
$: doc/bull :: metadata
|
||||
pub/pass :: public key
|
||||
== ::
|
||||
++ farm (map ship will) :: pki dump set
|
||||
++ life @ud :: ship version
|
||||
++ mind {who/ship lyf/life} :: key identifier
|
||||
++ name (pair @ta @t) :: ascii / unicode
|
||||
++ oath @ :: signature
|
||||
++ tale :: urbit-signed *
|
||||
|* typ/mold :: payload mold
|
||||
$: dat/typ :: data
|
||||
syg/(map ship (pair life oath)) :: signatures
|
||||
== ::
|
||||
++ will (map life cert) :: meta-certificate
|
||||
:: ::::
|
||||
:::: ## 0.b :: rights and promises
|
||||
:: ::::
|
||||
:: %jael tracks promises (++rite) from ship to ship.
|
||||
:: a rite may be any right, badge, asset, secret, etc.
|
||||
:: un-shared secret or private asset is stored as a
|
||||
:: rite from self to self.
|
||||
::
|
||||
:: each rite is really a class of rights, and often
|
||||
:: has its own internal set or map structure.
|
||||
::
|
||||
:: present kinds of rite:
|
||||
::
|
||||
:: %apple: application secret for a web api.
|
||||
:: %block: the promisee is banned.
|
||||
:: %email: email tied to promissee's ship.
|
||||
:: %final: ship/ticket pair, ready to launch.
|
||||
:: %fungi: fungible, countable asset.
|
||||
:: %guest: permission to adopt foreign child.
|
||||
:: %hotel: block of unissued children.
|
||||
:: %jewel: urbit private keys.
|
||||
:: %login: user's login passcode.
|
||||
:: %pword: password for a website/api.
|
||||
:: %token: user access token for a web api.
|
||||
:: %urban: symmetric key for urbit networking.
|
||||
::
|
||||
:: %fungi keys can be anything, but don't reuse
|
||||
:: currency codes. codes for urbit invitations:
|
||||
:: %ugl == galaxy, %usr == star, %upl == planet
|
||||
::::
|
||||
++ bill (pair @da @) :: expiring value
|
||||
++ bump :: rights change
|
||||
$: mor/safe :: add rights
|
||||
les/safe :: lose rights
|
||||
== ::
|
||||
++ dorm (pair ship bloq) :: issuing group
|
||||
++ pile (tree (pair @ @)) :: efficient ship set
|
||||
++ rite :: urbit commitment
|
||||
$% {$apple p/(map site @)} :: web api key
|
||||
{$block $~} :: banned
|
||||
{$email p/(set @t)} :: email addresses
|
||||
{$final p/@pG} :: recognize by ticket
|
||||
{$fungi p/(map term @ud)} :: fungibles
|
||||
{$guest $~} :: refugee visa
|
||||
{$hotel p/(map dorm pile)} :: reserved block
|
||||
{$jewel p/(map life ring)} :: private keyring
|
||||
{$login p/(set @pG)} :: login secret
|
||||
{$pword p/(map site (map @t @t))} :: web passwd by user
|
||||
{$token p/(map site (map @t @t))} :: app tokens by user
|
||||
{$urban p/(map hand bill)} :: urbit symmetric keys
|
||||
== ::
|
||||
++ site (list @ta) :: [%com %yahoo %www ~]
|
||||
++ safe (tree rite) :: rights set
|
||||
:: ::::
|
||||
:::: ## 0.c :: i/o
|
||||
:: ::::
|
||||
:: %jael has two general kinds of task: changes
|
||||
:: and change subscriptions.
|
||||
::
|
||||
:: change tasks are designed to match high-level
|
||||
:: operations - for instance, we have %burn, %mint,
|
||||
:: and %move, not just a single delta operation.
|
||||
:: more of these operations will probably be added,
|
||||
:: and invariants enforced at transaction end.
|
||||
::
|
||||
:: subscriptions are also user-focused - for instance,
|
||||
:: %vein sends all the information needed to maintain
|
||||
:: the secure channel, both rights and certificates.
|
||||
:: the security-critical tasks (%veil, %vein, %vine)
|
||||
:: should probably be bound to a whitelisted duct set.
|
||||
:: (all secrets are redacted from %vest gifts.)
|
||||
::
|
||||
:: %jael only talks to %ames and %behn. we send messages
|
||||
:: through %ames and use %behn timers.
|
||||
::::
|
||||
++ action :: balance change
|
||||
%+ pair ship :: partner
|
||||
%+ each bump :: &/liability change
|
||||
bump :: |/asset change
|
||||
:: ::
|
||||
++ balance :: balance sheet
|
||||
%+ pair ::
|
||||
(map ship safe) :: liabilities
|
||||
(map ship safe) :: assets
|
||||
:: ::
|
||||
++ change :: urbit change
|
||||
$% $: $fact :: certificate change
|
||||
rex/ship :: owner
|
||||
vie/(unit (unit ship)) :: made/heard from
|
||||
lyf/life :: deed added/modified
|
||||
gan/growth :: info gained
|
||||
== ::
|
||||
$: $rite :: rights change
|
||||
rex/ship :: issuer
|
||||
pal/ship :: issued to
|
||||
del/bump :: change
|
||||
== == ::
|
||||
:: ::
|
||||
++ channel :: secure channel
|
||||
$: out/(unit (pair hand bill)) :: outbound key
|
||||
inn/(map hand bill) :: inbound keys
|
||||
cur/(unit life) :: their version
|
||||
sax/(list ship) :: their ancestry
|
||||
pub/will :: their public keys
|
||||
== ::
|
||||
++ gift :: out result <-$
|
||||
$? {$veil p/channel} :: secure channel
|
||||
{$vest p/tally} :: balance update
|
||||
{$vein p/life q/(map life ring)} :: private keys
|
||||
{$vine p/(list change)} :: all raw changes
|
||||
== ::
|
||||
++ growth :: unit of learning
|
||||
$% {$sign p/mind q/@} :: add/update signature
|
||||
{$step p/cert} :: add whole deed
|
||||
== ::
|
||||
++ note :: out request $->
|
||||
$% {$b $wait p/@da} :: wait until
|
||||
{$x $mess p/ship q/path r/*} :: send message
|
||||
== ::
|
||||
++ remote :: remote notification
|
||||
%+ each safe :: &/addition
|
||||
safe :: |/replacement
|
||||
:: ::
|
||||
++ sign :: in result $<-
|
||||
$% {$b $wake $~} :: wakeup
|
||||
{$x $rest p/coop} :: message result
|
||||
== ::
|
||||
++ tally :: balance update
|
||||
%+ each balance :: complete
|
||||
action :: change
|
||||
::
|
||||
++ task :: in request ->$
|
||||
$% {$burn p/ship q/safe} :: destroy rights
|
||||
{$hail p/ship q/remote} :: remote update
|
||||
{$init p/@p}
|
||||
:: {$init p/@pG q/arms} :: initialize urbit
|
||||
{$meet p/(unit (unit ship)) q/farm} :: integrate pki from
|
||||
{$mint p/ship q/safe} :: create rights
|
||||
{$move p/ship q/ship r/safe} :: transfer from/to
|
||||
{$next p/bull} :: update private key
|
||||
{$nuke $~} :: cancel tracker from
|
||||
{$veil p/ship} :: view secret channel
|
||||
{$vein $~} :: view signing keys
|
||||
{$vest $~} :: view public balance
|
||||
{$vine $~} :: view secret history
|
||||
{$jaelwomb p/womb-task}
|
||||
{$west p/ship q/path r/*} :: remote request
|
||||
== ::
|
||||
++ ticket @G :: old 64-bit ticket
|
||||
++ passcode @uvH :: 128-bit passcode
|
||||
++ passhash @uwH :: passocde hash
|
||||
++ mail @t :: email address
|
||||
++ invite ::
|
||||
$: who/mail :: owner email
|
||||
pla/@ud :: planets to send
|
||||
sta/@ud :: stars to send
|
||||
== ::
|
||||
++ womb-task :: manage ship %fungi
|
||||
$% {$claim aut/passcode her/@p tik/ticket} :: convert to %final
|
||||
{$bonus tid/passcode pla/@ud sta/@ud} :: supplement passcode
|
||||
{$invite tid/passcode inv/invite} :: alloc to passcode
|
||||
{$reinvite aut/passcode tid/passcode inv/invite} :: move to another
|
||||
==
|
||||
++ womb-scry
|
||||
$% {$shop typ/?($star $planet) nth/@u} :: available ships
|
||||
{$stats who/ship} :: ship details
|
||||
{$balance aut/passcode} :: invite details
|
||||
==
|
||||
++ womb-balance {who/mail pla/@ud sta/@ud} :: equivalent to invite?
|
||||
++ womb-gilt
|
||||
$% {$ships (list ship)} ::
|
||||
{$womb-owner (unit mail)} ::
|
||||
{$womb-balance (unit womb-balance)} ::
|
||||
==
|
||||
++ gilt ?(womb-gilt)
|
||||
--
|
||||
=, crypto
|
||||
=, jael
|
||||
:: ::::
|
||||
:::: # 1 :: private structures
|
||||
:::: # 1 :: models
|
||||
:: ::::
|
||||
:: the %jael state comes in two parts: absolute
|
||||
:: and relative.
|
||||
|
4359
arvo/zuse.hoon
4359
arvo/zuse.hoon
File diff suppressed because it is too large
Load Diff
29
gen/bug.hoon
Normal file
29
gen/bug.hoon
Normal file
@ -0,0 +1,29 @@
|
||||
::
|
||||
:::: /hoon/hello/gen
|
||||
::
|
||||
/? 310
|
||||
::
|
||||
::::
|
||||
!:
|
||||
:- %say
|
||||
|= {^ {{txt/@tas $~} $~}}
|
||||
~& %foobar
|
||||
=+ bar=32
|
||||
=> |%
|
||||
++ funq
|
||||
^?
|
||||
|%
|
||||
++ add |=({a/@ b/@} (sub a b))
|
||||
++ mook txt
|
||||
--
|
||||
--
|
||||
=, funq
|
||||
~& %one
|
||||
=+ foo=mook
|
||||
~& [%foo (^add 2 2)]
|
||||
=< $
|
||||
|%
|
||||
++ $
|
||||
:- %noun
|
||||
(crip (weld "hello, " (trip mook)))
|
||||
--
|
@ -15,11 +15,11 @@
|
||||
++ drum-pith-1 ::
|
||||
$: sys/(unit bone) :: local console
|
||||
eel/(set gill) :: connect to
|
||||
ray/(set well) ::
|
||||
fur/(map dude (unit server)) :: servers
|
||||
ray/(set well:gall) ::
|
||||
fur/(map dude:gall (unit server)) :: servers
|
||||
bin/(map bone source) :: terminals
|
||||
== ::
|
||||
++ drum-start well :: start (local) server
|
||||
++ drum-start well:gall :: start (local) server
|
||||
:: :: ::
|
||||
:::: :: ::
|
||||
:: :: ::
|
||||
@ -65,7 +65,7 @@
|
||||
++ ukase :: master command
|
||||
$% {$add p/(list gill)} :: attach to
|
||||
{$del p/(list gill)} :: detach from
|
||||
{$new p/(list well)} :: create
|
||||
{$new p/(list well:gall)} :: create
|
||||
== ::
|
||||
--
|
||||
:: :: ::
|
||||
@ -74,7 +74,7 @@
|
||||
|%
|
||||
++ deft-apes :: default servers
|
||||
|= our/ship
|
||||
%- ~(gas in *(set well))
|
||||
%- ~(gas in *(set well:gall))
|
||||
=+ myr=(clan our)
|
||||
?: =(%pawn myr)
|
||||
[[%base %talk] [%base %dojo] ~]
|
||||
@ -184,7 +184,7 @@
|
||||
(se-belt bet)
|
||||
::
|
||||
++ poke-start ::
|
||||
|= wel/well
|
||||
|= wel/well:gall
|
||||
=< se-abet =< se-view
|
||||
(se-born wel)
|
||||
::
|
||||
@ -223,11 +223,11 @@
|
||||
(se-dump:(se-drop & gyl) u.saw)
|
||||
::
|
||||
++ take-onto ::
|
||||
|= {way/wire saw/(each suss tang)}
|
||||
|= {way/wire saw/(each suss:gall tang)}
|
||||
=< se-abet =< se-view
|
||||
?> ?=({@ @ $~} way)
|
||||
?> (~(has by fur) i.t.way)
|
||||
=+ wel=`well`[i.way i.t.way]
|
||||
=+ wel=`well:gall`[i.way i.t.way]
|
||||
?- -.saw
|
||||
$| (se-dump p.saw)
|
||||
$& ?> =(q.wel p.p.saw)
|
||||
@ -263,7 +263,7 @@
|
||||
^+ .
|
||||
%+ roll (~(tap in ray))
|
||||
=< .(con +>)
|
||||
|= {wel/well con/_..se-adit} ^+ con
|
||||
|= {wel/well:gall con/_..se-adit} ^+ con
|
||||
=. +>.$ con
|
||||
=+ hig=(~(get by fur) q.wel)
|
||||
?: &(?=(^ hig) |(?=($~ u.hig) =(p.wel syd.u.u.hig))) +>.$
|
||||
@ -361,7 +361,7 @@
|
||||
==
|
||||
::
|
||||
++ se-born :: new server
|
||||
|= wel/well
|
||||
|= wel/well:gall
|
||||
^+ +>
|
||||
?: (~(has in ray) wel)
|
||||
(se-text "[already running {<p.wel>}/{<q.wel>}]")
|
||||
|
@ -212,7 +212,7 @@
|
||||
(emit %flog /helm %verb ~)
|
||||
::
|
||||
++ take-onto :: result of %conf
|
||||
|= saw/(each suss tang) =< abet
|
||||
|= saw/(each suss:gall tang) =< abet
|
||||
%- emit
|
||||
?- -.saw
|
||||
$| [%flog ~ %crud %onto `tang`p.saw]
|
||||
|
@ -37,7 +37,7 @@
|
||||
==
|
||||
==
|
||||
++ txt
|
||||
(lore own)
|
||||
(lore:differ own)
|
||||
--
|
||||
++ grab
|
||||
|% :: convert from
|
||||
|
Loading…
Reference in New Issue
Block a user