It shuffles time complexities for `Env` operations around, but overall:
- It speeds things up because of less indirections.
- It makes the API simpler since there is no longer need to fork.
* Use own error type for unlifting errors
* Effectful.Internal.Error.EffectfulError -> Effectful.Internal.Unlift.UnliftError
* Moved more unlifting related code to Effectful.Internal.Unlift
* Apply suggestions from code review
Co-authored-by: Andrzej Rybczak <arybczak@users.noreply.github.com>
* Added Generic instances for unlifting types
* Strict fields in UnliftError
* Naming of tests
* Use Optics in test suite
* Added `unsafeUnliftToEff`
* Fixed link in description of effectful-core
* Added note for descriptive error messages to UnliftError
* UnliftTests: Follow naming scheme in other test modules
Co-authored-by: Andrzej Rybczak <arybczak@users.noreply.github.com>
* Moved effectful library to a subdirectory
* Initial commit of the effectful-core library
* Removed tests/benchmarks/examples from effectful-core package
* Removed READMEs from packages
* Updated CI
* Refactored doctest script
This is a bit closer to the CI setup.
* Adjusted dependencies
* Updated README
* Updated the package descriptions
* Added examples to test suite