TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Scoped Propagators

164 点作者 cdata10 个月前

12 条评论

graypegg10 个月前
Interesting concept! It does remind me of the observables somewhat, where nodes are functions, which accept data coming in from events, which it transforms, and then chooses to emit new values or not.<p>This flips that, so nodes are data, which accept functions from events, it applies that function to itself, then decides to propagate that event onwards or not.<p>I like it! That model works really well for this sort of visual programming demoed in the infinite canvas stuff.
评论 #40918889 未加载
评论 #40919900 未加载
noelwelsh10 个月前
Some of the videos are broken for me (using Firefox). Otherwise looks pretty neat.<p>Compared to FRP it is perhaps a bit more declarative in the definition of scopes, but otherwise seems equivalent. I&#x27;m interested in more details on this. I&#x27;m also a bit confused by<p>&gt; This model has not yet been formalised, and while the propagators themselves can be simply expressed as a function ... I have not yet found an appropriate way to express scopes and the relationship between the two.<p>This seems straightforward to me (e.g. a scope could be a set of types, where each distinct event has a distinct type) so I think I&#x27;m missing something here.
评论 #40917328 未加载
评论 #40918074 未加载
low_tech_punk10 个月前
Reminds me of Gerald Sussman&#x27;s talk &quot;We Really Don&#x27;t Know How to Compute!&quot; (2011)<p><a href="https:&#x2F;&#x2F;youtu.be&#x2F;HB5TrK7A4pI?si=99cUwmS_03VwLUP7&amp;t=2038" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;HB5TrK7A4pI?si=99cUwmS_03VwLUP7&amp;t=2038</a>
blixt10 个月前
Very cool! Good to see the shoutout to Dennis&#x27; Holograph.so work as well. I played around with that one to make some fun things:<p>A game of cat and mouse: <a href="https:&#x2F;&#x2F;x.com&#x2F;blixt&#x2F;status&#x2F;1797384954172625302" rel="nofollow">https:&#x2F;&#x2F;x.com&#x2F;blixt&#x2F;status&#x2F;1797384954172625302</a><p>An analog clock: <a href="https:&#x2F;&#x2F;x.com&#x2F;blixt&#x2F;status&#x2F;1798393279194824952" rel="nofollow">https:&#x2F;&#x2F;x.com&#x2F;blixt&#x2F;status&#x2F;1798393279194824952</a><p>I think tools like these, with better UX and more guard rails for the code, can really help people understand logic and systems in a much more visually intuitive way. In some aspects, these propagators work similar to Excel, which I think a lot of people already have some intuition for.
GrantMoyer10 个月前
As written, a &quot;scope&quot; is a function, s: G² → None + T, from the current global state and the previous global state to an optional value of some type T. Meanwhile, a &quot;propagator&quot; is a function, p: G² × A × B → B, from the current global state, the previous global state, a source node, and a target node to a new target node, such that p(g, g&#x27;, a, b) = if s(g, g&#x27;) is None then b else f(s(g, g&#x27;), a, b) for some f: T × A × B → B.<p>For example tick(g, g&#x27;) = time(g&#x27;) - time(g), and change(g, g&#x27;) = if node_s(g&#x27;) ≠ node_s(g) then () else None where node_s(g) gets the source node of the change scope from global state g.<p>In practice the outputs of a scope can be computed once per state change and called an event, rather than computed on demand each time it&#x27;s used, and scopes which return None don&#x27;t need to be propagated. Also, I suspect it would be useful to restrict scopes to (A × B)² → None + T or even just A² → None + T, so that events are limited to propagating along chains of edges.
hosh10 个月前
Wow! That&#x27;s neat! There are a lot to explore beyond interactive objects.<p>One of the first thing that comes to mind was is about Smalltalk, and the idea that it is about the messages and not the objects.<p>The next thing to come in mind is about how this allows for composition of interactions. I think it can enable highly local customization that can still receive software updates from upstream. I am thinking about how one of the problems with extensible specifications (such as XMPP) eventually lead to an ecosystem where feature updates cannot propogate easily; and we might see something like that in the Fediverse
omneity10 个月前
What is separating this concept from dataflow programming, perhaps with slightly different semantics and interaction patterns? (I reckon my understanding might be limited so I&#x27;m genuinely seeking enlightenment)
zoogeny10 个月前
This kind of node&#x2F;edge based programming model is one I&#x27;ve been interested to see applied to LLMs.<p>In some sense, we can see the input of an LLM as a node, the LLM itself as a function describing the edge of the graph, and the output of the LLM as a new node.
donpark10 个月前
Related repos:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;OrionReed&#x2F;scoped-propagators">https:&#x2F;&#x2F;github.com&#x2F;OrionReed&#x2F;scoped-propagators</a><p><a href="https:&#x2F;&#x2F;github.com&#x2F;dennishansen&#x2F;holograph">https:&#x2F;&#x2F;github.com&#x2F;dennishansen&#x2F;holograph</a>
jiggawatts10 个月前
This feels very similar to how database table triggers work. You define trigger conditions, and then the trigger on table A tells table B how to update itself. The tables store only data.
fiddlerwoaroof10 个月前
This seems like delimited continuations to me
MurrayHurps10 个月前
This is genius, and very well described.<p>Could be a meaningful bridge between “nocode” and code, avoiding what seems like a common pain point of eventual nocode limitations. I know there are other solutions in this space, but yours is very nicely done.<p>Please continue work on this, and yell out if you need collaborators.