Prism: An Impure Functional Language With Typed Effects

55 points by jcmkk3


fanf

I wonder what lenses have to do with effects. Every mention of lenses in the article makes them sound unrelated, except that they are listed under “one trick five ways”.

Also, what the heck is tick_use() supposed to do?! Are readers expected to understand such a convoluted example without explanation? Some type annotations would have helped.

gulbanana

very impressive! so impressive, in fact, that i wonder why diehl calls the compiler a toy at the end of his post - really seems like a successful PoC for a new level of elegance

thunderseethe

I'd be curious to see more of the details of what the call by push value IR looks like. Especially does it handle join points or not. There have been papers that talk about the theory of adjoining CBPV with effects. It's pretty natural to say Computations have an effect type and values don't, but I haven't seen anything fleshed out enough to be directly applicable to kokas evidence passing, so that's quite interesting.

In general I'd be curious to understand how this stands against koka. Between FBIP, perceus, and evidence passing, it's clearly very inspired by kokas work. Its also clearly distinct (it uses CBPV for its IR). But it's hard for me to see how different it is.

spenc

Need to spend more time understanding it, but it looks so beautiful

sloane

not exactly on topic, but i have always been a bit sad that Stephen’s “write you a haskell” project stalled years back… i hope we get some good tutorial-grade implementation details for Prism!

Diana

Oooh it looks a lot like what I keep trying to find time working on. Nice!

tjammer

This almost reads too good to be true! They even managed to include Verse-like failure semantics, I may need to play with this "toy".

Also, I very much appreciate the pointing to literature, I wish more blogs did this

tel
Comment removed by author
tome

I'm wondering what's "impure" about this language. That word only appears in the title, not in the rest of the article. It seems that all effects are tracked, so a function without effects is still a mathematical function. Am I missing something?