<@UC2A2ARPT> I somehow only just saw <https://twit...
# thinking-together
k
@Ivan Reese I somehow only just saw https://twitter.com/spiralganglion/status/1145028588715950080. Had you posted it here at some point? I don't quite understand how the increment box has multiple input/output arrows. Is it just that there's only one increment operation in the world, or are the I/O pairs interacting somehow?
i
I've mentioned Hest a few times here in the Slack, but not particularly loudly, since it's not mature enough yet to warrant serious attention. To wit, I believe I've only made one top-level post about it — https://futureofcoding.slack.com/archives/CCL5VVBAN/p1566801692212900
To answer your question... Yes, in this demo there's only one increment operation. Currently, operations [/ functions / nodes / whatever] in Hest only act on a single input at a time, and are stateful. I'm pretty sure I'm going to change that, but I haven't yet found a way to express "multi-argument function" in terms of the geometric primitives I'm allowing myself to use. That's the biggest problem holding me back from making progress, and I'm planning to spend a few weeks working on just that problem later this month.
Edges [/ lines / cables / conveyors / whatever] are somewhat analogous to call sites, not arguments, so it's quite natural to have a node like "+ 1" have multiple edges connecting to it. It calls itself recursively too, in this example, but with a time delay.. and since execution is participatory — the programmer is the one controlling the passage of execution-time — infinite loops aren't the instruction pointer black holes we typically view them as.
(Helps that there is no notion of an instruction pointer.)
It's very easy for me to go way off the deep end explaining things. Sorry. I think it's better when the design of Hest speaks for itself in GIF and video form. I'll make some more demos when I have more to show, and I'll share them here.
d
Really cool @Ivan Reese! Why is
*=
but just
+
not
+=
? What's the difference between the 2? Also are particular reasons that you need more than 1 input at a time? Have you tried to use partial application to fake multiple inputs?
k
It has internal state, an accumulator.
👍 1
i
If you look at the function boxes.. they each have a little number that hangs off the right edge. That's a stored value. It is internal state. In the case of
*=
it is an accumulator, like Kartik said, so it updates the stored value with each invocation. The regular
+
operator does not. And yes, you can imagine that the
+
box has been partially applied with
1
, and the
*=
box continually replaces itself with a new function with a new partial application. ^ I hate all of this. None of this is truly part of the design of Hest. It's just a stepping stone for me to test the GUI, scheduler, renderer, etc. Those things are easy, whereas figuring out what notions of "programming" feel good in this environment.. that's very hard. I have a pretty good sense of.. things like function definition, composition, invocation.. and data definition and invocation... but I don't yet have a good sense of data composition (ie collections).
g
ahh “participatory execution” is an absolutely killer way of putting something i’ve long thought about
🍰 1