Skip to content
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

Isolate type level set functionality, program NonMember, remove #1

Open
agocorona opened this issue Jan 28, 2020 · 1 comment
Open

Comments

@agocorona
Copy link

agocorona commented Jan 28, 2020

Hi!

I wonder if you can isolate your type level set in a different package, sort of like https://github.com/dorchard/type-level-sets

the advantage of yours is that it does not require ordering. By isolating it it would be used for any kind of effect system.

I would need it for my monad, which is a bit peculiar. It uses rebindable syntax, and I tried to use dorchard type level sets
https://github.com/agocorona/tltransient/blob/master/src/Transient/TypeLevel/Effects.hs

But since it requires ordering, it is a mess to add new effects. I plan to define and use dozens of programmer-defined effects beyond the specific ones of the library. I also need to express constraints in terms of nonMember (for example some functions can be applied only if the program does not execute some effects) and also remove effects (for example by the execution of some call, some effect can be removed).

@effectfully
Copy link
Member

I also need to express constraints in terms of nonMember (for example some functions can be applied only if the program does not execute some effects) and also remove effects (for example by the execution of some call, some effect can be removed).

This is where things become really complex. I've been thinking about that and I don't know yet of a nice way to implement remove. Implementing nonMember might not be possible at all (but who knows). I'll continue thinking about these problems, but don't hold your breath.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants