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

Pre-release probing #9

Closed
re-xyr opened this issue Jan 20, 2022 · 1 comment
Closed

Pre-release probing #9

re-xyr opened this issue Jan 20, 2022 · 1 comment

Comments

@re-xyr
Copy link
Owner

re-xyr commented Jan 20, 2022

Since the library is feature-complete, and with the fix of #5, I think it is more or less the time to cut a release.

In the spirit of haskell-effectful/effectful#1, I'd like to ask @isovector, @KingoftheHomeless and @noughtmare to take a look at this library and offer your opinions and/or point out flaws. I have also talked with @arybczak and @lexi-lambda about cleff before and gained some valuable insights, but if you have anything else that you'd like to point out then please don't hesitate to do so.

Some tl;drs about cleff:

  • Like effectful, it is implemented with ReaderT IO, but differs greatly in details which is reflected in the discussion in Advantages over effectful #2. In particular,
    • effectful stores both handlers and states in thread-local mutable arrays.
    • cleff stores handlers in immutable arrays and states in IORefs which are shared among threads.
  • Due to these differences, unlike effectful, cleff does not have static dispatch or thread-local state.
  • cleff aims to have expressive interpretation API that supports higher-order effects. Currently the API expressibility is on par with that of polysemy and easier to use in my opinion (except that the final monad can only be IO due to the obvious restriction of the implementation).
  • cleff solves the HO semantics problem that haunts eff (Incorrect semantics for higher-order effects hasura/eff#12) though I'm not sure if that solution is portable to eff given it needs to support coroutines.
@isovector
Copy link

Looks cool, and congratulations on the release! I'm not going to have time to look at this though, unfortunately!

@re-xyr re-xyr closed this as completed Jan 31, 2022
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