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
Replying to
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
Show replies
yeah, that’s another reason to eschew them. e.g. the capabilities package uses type-level strings for labelled effects, but in fused-effects I went with arbitrary type-level structures, so you can define arbitrary nominal labels and retain modularity.
1