Not to imply you haven't already reviewed this, but a distributed graph of
dependency driven propagation of computation superficially resonates with
my understanding of Radul and Sussman's "The Art of the Propagator" [0]
(whose abstract should be sufficient to inspire or deter interest, on the
chance it is as yet uninspected).

--jpt4

[0] (pdf warning)
http://dspace.mit.edu/bitstream/handle/1721.1/44215/MIT-CSAIL-TR-2009-002.pdf?sequence=1

On Sep 26, 2017 12:44 AM, "James Bowery" <jabow...@gmail.com> wrote:

> Yesterday I ran across Nock because I was thinking about doing a quick and
> dirty VM based on an early '80s idea I had.  I figured I could dispense
> with all the complicated optimizations due to 23 doublings under Moore's
> law.  I posted about this, too informally, in /. in 2000 under "Network
> Functional Programming
> <https://ask.slashdot.org/comments.pl?sid=6343&cid=930087>".  Before I
> started coding, I wanted to see if anyone had done anything like it since,
> after all, it's been 35 years!  So googling some keywords led me to
> discover first Nock and then the stack which is intended to solve the
> problem I had been hired to solve for AT&T and Knight-Ridder way back then
> -- but that's another story
> <https://tech.slashdot.org/comments.pl?sid=2702791&cid=39217853>.
>
> I was quite excited to see the possibility that someone had finally solved
> the problem, but when I discovered Nock didn't do lazy evaluation --
> instead leaving it as an option to higher levels -- I realized it wasn't
> going to do what I had hoped.
>
> Let me explain the basic idea in more detail because it isn't "just" lazy
> evaluation, and I'm not sure -- even after doing the searches -- that
> anyone has seriously researched it.  And, just to preempt -- I'm not
> talking about "reactive" or "functional reactive" programming as normally
> conceived either.
>
> Normally what people think of when they hear "lazy" or "demand driven" is
> that there is some kind of output required and everything happens -- only
> -- in service of that observation, and once the output is generated, it's
> all over until the next demand drives the evaluation again.  The network
> architecture I was targeting used dependency graphs required by David
> Reed's NAMOS system* (eventually becoming TeaTime for Alan Kay's Croquet
> system) for networked atomic actions, but the graphs were, along with
> pervasive memoized values, built by lazy evaluation and remained in place,
> connecting the inputs to the network to the continuously observed outputs
> of the network.  If one of the inputs change, the change propagates through
> the dependency graphs as a data-driven or eager evaluation -- terminating
> any propagation if an evaluation produced no change in its memoized
> output.  If an observation goes away, the reference counts are decremented
> through the graphs along with the dependency links and at 0 references, the
> memoized value is voided -- although not deleted as NAMOS was a write-once
> or single assignment system (depending on one's paradigm) and the result is
> journaled as it rolls off the system providing an audit trail and potential
> for pseudo-time travel.  If the eager evaluation propagates all the way to
> an output and discovers it is inactive, it assumes there was a failure to
> decrement the reference counters etc. by the removal of the observer and it
> happens at that point.
>
> Now, this may seem like way too much functionality to put into such a
> primitive VM as Nock, but one must bear in mind that SK reduction machines
> were widely considered to be a viable route for massively parallel dataflow
> evaluation back in the halcyon days post-Backus's Turing Award lecture
> <https://www.cs.ucf.edu/~dcm/Teaching/COT4810-Fall%202012/Literature/Backus.pdf>"".
> Also bear in mind that Nock contains features that permit it to _formally_
> fulfill the rigor of such horrors as Church numbers without sacrificing
> much in the way of performance.  You don't need to put all that machinery
> everywhere -- but when you need it, which is almost all the time -- you
> _really_ need it.
>
> For example, one of the symptoms that one needs it is when one finds one
> has to construct "make" like systems or "build" systems to maintain file
> system version integrity.  What you _really_ need is a generalized atomic
> action system such as that provided by NAMOS, and a "release" of a "build"
> is just the commit of an atomic action that propagates changes outside of
> the temporary** "fork" in reality.
>
> *"Naming and Synchronization In a Decentralized Computer System
> <http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-205.pdf>" --
> an early form of named data networking aka content-centric networking aka
> information centric networking.  It turns out that Arvind and Gostellow --
> down one story from Reed at the MIT LCS -- had used virtually isomorophic
> data structures to Reed's NAMOS in their contemporaneous dataflow machine
> (the "U-Interpreter <http://ieeexplore.ieee.org/document/1653940/>") to
> perform the data-driven evaluations but neither they nor Reed were aware of
> this until I pointed it out to them.  Their "tagged architecture" had
> "tags" that were pretty much the same as Reed's "names",  to match up data
> flow tokens.
>
> **This "ease of forking reality" is, by the way, automatically
> accomplished by non-determinism and is a reason people working on pure
> functional operating systems find themselves going relational since
> functions are degenerate relations that may be considered inconsistent
> "forks" as required by the CAP theorem, among other realities.
>
> --
> You received this message because you are subscribed to the Google Groups
> "urbit" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to urbit-dev+unsubscr...@googlegroups.com.
> To post to this group, send email to urbit-dev@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"urbit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to urbit-dev+unsubscr...@googlegroups.com.
To post to this group, send email to urbit-dev@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to