-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Effects: Pikelet should actually be useful! #93
Comments
As Pikelet is dependently typed, we should probably think about how effects fit in to evaluation. Initially we could treat any effectful computation as 'stuck'. There is work being done though on trying to integrate effects into dependent type theory, under the names 'Observational Type theory' and 'Cubical Type Theory'. This is still very much ongoing research though, so it might be better to be conservative for now. Some dependently typed languages that currently integrate effects are F* and Idris. Perhaps we could get some inspiration from there? |
I think OTT/HoTT/CTT aren't so much about effects, but rather about exploring the nature of equality, allowing to do proofs on functions ( |
Here are a couple of recent CBPV-style systems for dependent effects:
|
https://github.com/OPLSS/introduction-to-algebraic-effects-and-handlers |
Bunch of interesting papers here: https://www.pédrot.fr/publications.html (thanks @pythonesque, via twitter) |
Some other thoughts:
|
Since you're collecting references here, might as well save a pointer to Yallop's bibliography which can serve as a 1-stop shop for all cool papers related to effects :) |
Yeah, great idea, forgot about that one! |
Also, @aatxe informs me that:
https://gitter.im/pikelet-lang/Lobby?at=5c53283941775971a0b50da8 |
At the moment Pikelet doe not do anything useful. In order to be more useful, we probably need some form of way to perform effects.
Initially we could use an
Io : Type -> Type
wrapper type for this.Eventually I would like us to move to something like an algebraic effect system. The limiting factor for this would be that it must be zero-cost. ie. We need to make sure that any reification of effects can be erased or partially evaluated away at compile time in a reliable way. This should result in codegen identical to if one had written code in an imperative language.
Resources
yallop/effects-bibliography has lots of links.
Here are some papers that are more specifically about integrating dependent types and effects:
The text was updated successfully, but these errors were encountered: