That looks really cool. Can you narrow Bluefin.IO to reads/writes separately? One of the things I've worked on is the ability to allow code to read files, even specific files, but deny writes.
Yeah you can write a capability that encapsulates exactly whatever effects that you like!
Did this start as an effect system and then capabilities shook out naturally?
Yes! It started as an implementation of the effect system I always wanted: effects passed on the value level, rather than implicitly on the type level. Once I'd done that I realise that it was actually a capability system (and that was the better way of describing it, because more people already know what a "capability system" is).
That’s not surprising there’s a lot of mechanical overlap between the two. It’s a really interesting relationship.
Yeah, I think they're basically identical concepts. I'm writing an article on that topic right now.
I’d love to read it!
Here you go! It's a complete document, but I'll continue to edit it over the next few days before I announce it. I'd love to hear any thoughts you have.