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
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