Commit Graph

11 Commits

Author SHA1 Message Date
Philip Monk
e3a8cab943 khan: support inline threads
This allows you to pass a thread directly into khan, instead of passing
a filename.  This has several implications:

- The friction for using threads from an app is significantly lower.
  Consider:

    =/  shed
      =/  m  (strand ,vase)
      ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>('hi'))
      ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>('there'))
      (pure:m !>('product'))
    [%pass /wire %arvo %k %lard %base shed]

- These threads close over their subject, so you don't need to parse
  arguments out from a vase -- you can just refer to them.  The produced
  value must still be a vase.

    ++  hi-ship
      |=  [=ship msg1=@t msg2=@t]
      =/  shed
        =/  m  (strand ,vase)
        ;<  ~  bind:m  (poke:strandio [ship %hood] %helm-hi !>(msg1))
        ;<  ~  bind:m  (poke:strandio [ship %hood] %helm-hi !>(msg2))
        (pure:m !>('product'))
      [%pass /wire %arvo %k %lard %base shed]

- Inline threads can be added to the dojo, though this PR does not add
  any sugar for this.

    =strandio -build-file %/lib/strandio/hoon
    =sh |=  message=@t
        =/  m  (strand:rand ,vase)
        ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>('hi'))
        ;<  ~  bind:m  (poke:strandio [our %hood] %helm-hi !>(message))
        (pure:m !>('product'))
    |pass [%k %lard %base (sh 'the message')]

Implementation notes:
- Review the commits separately: the first is small and implements the
  real feature.  The second moves the strand types into lull so khan can
  refer to them.

- In lull, I wanted to put +rand inside +khan, but this fails to that
  issue that puts the compiler in a loop.  +rand depends on +gall, which
  depends on +sign-arvo, which depends on +khan.  If +rand is in +khan,
  this spins the compiler.  The usual solution is to either move
  everything into the same battery (very ugly here) or break the
  recursion (which we do here).
2022-08-29 21:04:50 -08:00
Philip Monk
0e14eedb50 spider: accept inline threads 2022-08-29 20:09:08 -08:00
ryjm
084f74129b spider, docket: fix versioning and validate-mark 2021-10-05 22:46:07 -04:00
ryjm
47a6aa2753 spider garden: remove sigpams and move glob mark 2021-09-27 21:23:46 -04:00
ryjm
098587bf8b spider: fix mark validation
glob is succesfully downloaded and inserted into the docket state, but
as an octet stream. need to define the correct marks.
2021-09-27 21:23:46 -04:00
ryjm
035b29f0c0 spider: strand fixes 2021-09-27 21:23:46 -04:00
ryjm
121a7c9468 garden spider: add desk tracking 2021-09-27 21:23:46 -04:00
ryjm
c8cf0bb98d garden spider: (testing) correctly validate
just need to properly store the desk in `serving:spider` now.
2021-09-27 21:23:46 -04:00
ryjm
571649c631 spider: strand fixes 2021-09-27 21:23:46 -04:00
ryjm
a08c38b83c spider: track desks and validate marks (wip) 2021-09-27 21:23:46 -04:00
Ted Blackman
f958b7874f various: fixes, pill might actually work now 2021-08-10 16:13:27 +03:00