Crosscut

Daily Thought - 2024-12-22

Hey, I'm Hanno! These are my daily thoughts on Crosscut, the programming language I'm creating. If you have any questions, comments, or feedback, please get in touch!

This thought was published before Crosscut was called Crosscut! If it refers to "Caterpillar", that is the old name, just so you know.

< back to list

Over the last few days, I've been analyzing an example that combines linear types and effects:

file
    "a" write
    "b" write

Yesterday, I looked into the Write effect. Today, I'd like to take a stab at the second effect this could trigger. Let's call that one Error.

If an I/O error happens while writing to a file, then the code doing the writing could handle the Error effect and react appropriately. If it doesn't handle the Error effect, and some caller up the chain (maybe the host) does, I think it's safe to assume that this caller shouldn't resume the code triggering the effect.

That means we need to take care of file, by putting it into the error (as a payload), so whoever handles that can take care of disposing or re-using it. write, which gets control over file anyway, could take care of that under the hood. So it wouldn't be a problem in this case. But it would be a problem, if there are other linear types in scope, that are unrelated to this error.

<< previous thoughtnext thought >>

Hey, you! Want to subscribe to my daily thoughts? Just let me know (maybe include a nice message, if you're up for it), and I'll send you an email whenever I post a new one.