| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /- *sock
- /+ ska
- |%
- :: mask axes in a noun to make a sock
- ++ dope
- |= [mask=(list @) non=noun]
- ^- boot
- =/ sack=boot [%safe %know non]
- |-
- ^- boot
- ?~ mask sack
- $(sack (welt:ska i.mask [%safe %toss ~] sack), mask t.mask)
- :: turn a hoon type into a boot
- ++ wove
- |= kine=type
- ^- boot
- =| gil=(set type)
- ?@ kine
- ?- kine
- %noun [%risk %toss ~]
- %void [%boom ~]
- ==
- ?- -.kine
- %atom
- ?~ q.kine
- [%risk %dice ~]
- [%risk %know u.q.kine]
- ::
- %cell
- (cobb:ska $(kine p.kine) $(kine q.kine))
- ::
- %core
- %+ cobb:ska
- (spry p.r.q.kine) :: compiled battery
- $(kine p.kine) :: current payload
- ::
- %face
- $(kine q.kine)
- ::
- %fork
- =/ tins ~(tap in p.kine)
- ?~ tins [%boom ~]
- =/ hypo $(kine i.tins)
- =/ tons t.tins
- |-
- ^- boot
- ?~ tons hypo
- $(hypo (gnaw:ska ^$(kine i.tons) hypo), tons t.tons)
- ::
- %hint
- $(kine q.kine)
- ::
- %hold
- ?: (~(has in gil) kine)
- [%risk %toss ~]
- $(gil (~(put in gil) kine), kine ~(repo ut kine))
- ==
- :: turn a seminoun into a sock
- ++ spry
- |= seminoun
- ^- boot
- ?- -.mask
- %half
- ?> ?=(^ data)
- (cobb:ska $(mask left.mask, data -.data) $(mask rite.mask, data +.data))
- ::
- %full
- ?~ blocks.mask
- [%risk %know data]
- [%risk %toss ~]
- ::
- %lazy
- [%risk %toss ~]
- ==
- :: for a stateful core, figure out what we can assume across all state
- :: transitions
- ::
- :: step is a list of arm axes and result axes which are expected to produce gates
- :: the gates will be simul-slammed with %toss
- :: then the result axis will be intersected with the stateful core
- :: knowledge
- ::
- :: fixed point termination argument: we can only know the same or less
- :: than what we knew last time (intersection cannot add knowledge)
- :: if we know the same, we stop now. We can only subtract finitely many
- :: axes of knowledge from the tree before we know [%boom ~] or
- :: [%risk %toss ~] at which point we will learn the same thing twice
- :: and terminate
- ++ arid
- |= [muck=boot step=(list [@ @])]
- ^- boot
- =/ yuck muck
- =/ stop step
- ?: ?=(%boom -.muck)
- [%boom ~]
- |-
- ^- boot
- ?~ stop
- ?: =(yuck muck)
- yuck
- ^$(muck yuck)
- =/ erm (yank:ska -.i.stop muck)
- ?: ?=(%boom -.erm)
- $(stop t.stop, yuck (gnaw:ska [%boom ~] yuck))
- =/ arm (trip:ska erm)
- ?~ arm
- $(stop t.stop, yuck (gnaw:ska [%risk %toss ~] yuck))
- =/ cor
- ?- -.muck
- %safe sure.muck
- %risk hope.muck
- ==
- =/ mat (wash:ska cor u.arm)
- ?: ?=(%boom -.mat)
- $(stop t.stop, yuck (gnaw:ska [%boom ~] yuck))
- =/ ear (yank:ska 2 mat)
- ?: ?=(%boom -.ear)
- $(stop t.stop, yuck (gnaw:ska [%boom ~] yuck))
- =/ gar (trip:ska ear)
- ?~ gar
- $(stop t.stop, yuck (gnaw:ska [%risk %toss ~] yuck))
- =/ mar (welt:ska 6 [%risk %toss ~] mat)
- ?: ?=(%boom -.mar)
- $(stop t.stop, yuck (gnaw:ska [%boom ~] yuck))
- =/ gor
- ?- -.mar
- %safe sure.mar
- %risk hope.mar
- ==
- =/ beg (wash:ska gor u.gar)
- $(stop t.stop, yuck (gnaw:ska (yank:ska +.i.stop beg) yuck))
- --
|