freer-simple icon indicating copy to clipboard operation
freer-simple copied to clipboard

A friendly effect system for Haskell

Results 20 freer-simple issues
Sort by recently updated
recently updated
newest added

A draft PR to show the concept.... One of the great things about algebraic effects is that they allow you to _focus_ the range of effects needed by a function...

Here's self-containing example: ``` data MyEffect r where Execute :: MyEffect () makeEffect ''MyEffect handleFirstEffect :: (LastMember IO effs) => MyEffect ~> Eff effs handleFirstEffect = \case Execute -> liftIO...

After a bit of refactoring some `freer-simple` related code I ended up with this function: ```haskell mapEffs :: (Union effs ~> Union effs') -> Eff effs ~> Eff effs' mapEffs...

Current function signature of `runTrace` is ```haskell runTrace :: Eff '[Trace] a -> IO a ``` which is less composable than ```haskell runTrace :: LastMember IO es => Eff (Trace...

I am wondering if it might make sense to mark the simple effect primitives of the form `foo ... = send $ Effect ...` like `put` from `State` with `INLINE`...

I find myself wanting to have values with a very specific list of effects, to constrain what my users can do, e.g. `Eff '[E1, E2] a`. However, I then have...

There are now related libraries such as freer-simple-time and a number of blogs et.al etc. floating around in the hackage / the googlesphere. Would a relate links section under acknowledgements...

Some libraries, like lens, provide functions that are meant for use in MTL transformer stacks. Example: http://hackage.haskell.org/package/lens-4.17/docs/Control-Lens-Setter.html#g:5 If `Eff` had an instance for `MonadState`, then I could use those Lens...

Further to #22, I think the README code example would be much more informative if it had an example of _using_ `Console` somehow, and then two examples of this being...

There's a lot going on in `runConsolePure`. Although it could be educational, I think you have to understand a fair bit more to know what's going on. Can you please...