Conversation

started writing out semantics for my dark hypothesis (that there’s an effect calculus equivalent to lambda calculus but without let or lambdas, where computations are given meaning entirely by effects)
3
32
it looks like it’s going to be most convenient to express everything structurally rather than nominally. that is, instead of defining an interface for an effect, you just work locally with whatever operations you feel like providing, and so long as they line up with consumers, 👍🏻
2
4
they’re named, but the names are a contract between sender and receiver only, i.e. local to a given scope, just like a variable name is a contract between the binding site and any reference sites.
1
1
to be clear, that’s just the formalism I’m designing. Facet itself uses nominally-typed interfaces, and the closest that will approach structural interfaces is if I allow local or inline definitions of them.
2
1
yeah. the formalism is a sequent calculus, i.e. not a software engineering system :) so I’m much less concerned about that kind of modularity because it doesn’t even acknowledge the existence of modules (or anything outside expressions, in fact!)
1
1
that said, extending it to integrate modules into the effect language is a pretty major goal, because I want to use that for parameterized modules, cross-compilation targets, metaprogramming, inline tests, and a bunch of other stuff.
1
1
Replying to
yeah, if field names are actually named entities, that problem goes away, altho I suppose it raises the question of where those are defined… who namespaces the namespaces themselves? quis namespa… you know what, never mind the mock-latin
1
1
Yeah! It gets a bit weird! Clojure lets you have ‘namespaced symbols’ but that requires a top level namespace thingy. Where as I would love to be able to get rid of the top level ‘command’ language (like in Dhall and Nix)
1
2
Show replies