Rename project to freer-simple

This commit is contained in:
Alexis King 2017-12-06 13:17:08 -08:00
parent 8a5570174c
commit e89ed8911f
5 changed files with 93 additions and 439 deletions

View File

@ -1,99 +1,46 @@
# This file has been generated -- see https://github.com/hvr/multi-ghc-travis
language: c language: c
sudo: false
cache: cache:
directories: directories:
- $HOME/.cabsnap - $HOME/.stack
- $HOME/.cabal/packages
before_cache:
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar
# The different configurations we want to test.
#
# We set the compiler values here to tell Travis to use a different
# cache file per set of arguments.
matrix: matrix:
include: include:
- env: CABALVER=1.18 GHCVER=7.8.4 HAPPYVER=1.19.3 DO_CHECKS=0 - env: ARGS="--resolver lts-7"
compiler: ": #GHC 7.8.4" compiler: ": #stack 8.0.1"
addons: {apt: {packages: [cabal-install-1.18, ghc-7.8.4, happy-1.19.3], sources: [hvr-ghc]}} addons: { apt: { packages: [libgmp-dev] } }
- env: CABALVER=1.22 GHCVER=7.10.3 HAPPYVER=1.19.4 DO_CHECKS=0
compiler: ": #GHC 7.10.3" - env: ARGS="--resolver lts-8"
addons: {apt: {packages: [cabal-install-1.22, ghc-7.10.3, happy-1.19.4], sources: [hvr-ghc]}} compiler: ": #stack 8.0.2"
- env: CABALVER=1.24 GHCVER=8.0.1 HAPPYVER=1.19.5 DO_CHECKS=1 addons: { apt: { packages: [libgmp-dev] } }
compiler: ": #GHC 8.0.1"
addons: {apt: {packages: [cabal-install-1.24, ghc-8.0.1, happy-1.19.5], sources: [hvr-ghc]}} - env: ARGS="--resolver nightly-2017-07-31"
- env: CABALVER=1.24 GHCVER=8.0.2 HAPPYVER=1.19.5 DO_CHECKS=1 compiler: ": #stack 8.2.1"
compiler: ": #GHC 8.0.2" addons: { apt: { packages: [libgmp-dev] } }
addons: {apt: {packages: [cabal-install-1.24, ghc-8.0.2, happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=head GHCVER=head HAPPYVER=1.19.5 DO_CHECKS=1 - env: ARGS="--resolver nightly"
compiler: ": #GHC head" compiler: ": #stack nightly"
addons: {apt: {packages: [cabal-install-head, ghc-head, happy-1.19.5], sources: [hvr-ghc]}} addons: { apt: { packages: [libgmp-dev] } }
allow_failures: allow_failures:
- env: CABALVER=head GHCVER=head HAPPYVER=1.19.5 DO_CHECKS=1 # Nightly builds are allowed to fail
- env: ARGS="--resolver nightly"
before_install: before_install:
- unset CC # Using compiler above sets CC to an invalid value, so unset it
- export PATH=/opt/happy/$HAPPYVER/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH - unset CC
- CABALFLAGS=(--enable-tests --enable-benchmarks --flags="pedantic test-hlint")
# Download and unpack the stack executable
- export PATH=$HOME/.local/bin:$PATH
- mkdir -p ~/.local/bin
- travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
install: install:
- cabal --version - stack --no-terminal --install-ghc $ARGS test --bench --only-dependencies
- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
- if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ];
then
zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz >
$HOME/.cabal/packages/hackage.haskell.org/00-index.tar;
fi
- travis_retry cabal update -v
- sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config
- cabal install --only-dependencies --dry -v "${CABALFLAGS[@]}" > installplan.txt
- sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt
# check whether current requested install-plan matches cached package-db snapshot
- if diff -u $HOME/.cabsnap/installplan.txt installplan.txt;
then
echo "cabal build-cache HIT";
rm -rfv .ghc;
cp -a $HOME/.cabsnap/ghc $HOME/.ghc;
cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;
else
echo "cabal build-cache MISS";
rm -rf $HOME/.cabsnap;
mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;
cabal install --only-dependencies "${CABALFLAGS[@]}";
fi
# snapshot package-db on cache miss
- if [ ! -d $HOME/.cabsnap ];
then
echo "snapshotting package-db to build-cache";
mkdir $HOME/.cabsnap;
cp -a $HOME/.ghc $HOME/.cabsnap/ghc;
cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;
fi
# Here starts the actual work to be performed for the package under test;
# any command which exits with a non-zero exit code causes the build to fail.
script: script:
- if [ -f configure.ac ]; then autoreconf -i; fi - stack --no-terminal $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps --ghc-options=-Werror
# Option -v2 provides useful information for debugging.
- cabal configure -v2 "${CABALFLAGS[@]}"
- cabal build # this builds all libraries and executables (including tests/benchmarks)
- cabal test
# Older Cabal versions do not handle "ghc-options: -Werror" in -fpedantic
# correctly. Package consistency doesn't depend on GHC version, or at least
# it shouldn't.
- if [ "$DO_CHECKS" = '1' ];
then
cabal check;
fi
- cabal sdist # tests that a source-distribution can be generated
# Check that the resulting source distribution can be built & installed.
# If there are no other `.tar.gz` files in `dist`, this can be even simpler:
# `cabal install --force-reinstalls dist/*-*.tar.gz`
- SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz &&
(cd dist && cabal install --force-reinstalls "$SRC_TGZ")
# EOF

133
README.md
View File

@ -1,47 +1,32 @@
# Freer Effects: Extensible Effects with Freer Monads # Freer: Extensible Effects with Freer Monads [![Build Status](https://travis-ci.org/lexi-lambda/freer-simple.svg?branch=master)](https://travis-ci.org/lexi-lambda/freer-simple)
[![Haskell Programming Language](https://img.shields.io/badge/language-Haskell-blue.svg)](http://www.haskell.org)
[![BSD3 License](http://img.shields.io/badge/license-BSD3-brightgreen.svg)](https://tldrlegal.com/license/bsd-3-clause-license-%28revised%29)
[![Hackage](http://img.shields.io/hackage/v/freer-effects.svg)](https://hackage.haskell.org/package/freer-effects)
[![Stackage LTS 8](http://stackage.org/package/freer-effects/badge/lts-8?label=lts-8)](http://stackage.org/nightly/package/freer-effects)
[![Stackage Nightly](http://stackage.org/package/freer-effects/badge/nightly?label=stackage)](http://stackage.org/nightly/package/freer-effects)
[![Hackage Dependencies](https://img.shields.io/hackage-deps/v/freer-effects.svg)](http://packdeps.haskellers.com/feed?needle=freer-effects)
[![Build](https://travis-ci.org/IxpertaSolutions/freer-effects.svg?branch=master)](https://travis-ci.org/IxpertaSolutions/freer-effects)
# Description # Description
Library `freer-effects` (actively maintained fork of The `freer-simple` library (a fork of [`freer-effects`](http://hackage.haskell.org/package/freer-effects)) is an implementation of an effect system for Haskell, which is based on the work of Oleg Kiselyov et al.:
[`freer`](http://hackage.haskell.org/package/freer)) is an implementation of
effect system for Haskell, which is based on the work of Oleg Kiselyov et al.:
* [Freer Monads, More Extensible Effects](http://okmij.org/ftp/Haskell/extensible/more.pdf) - [Freer Monads, More Extensible Effects](http://okmij.org/ftp/Haskell/extensible/more.pdf)
* [Reflection without Remorse](http://okmij.org/ftp/Haskell/zseq.pdf) - [Reflection without Remorse](http://okmij.org/ftp/Haskell/zseq.pdf)
* [Extensible Effects](http://okmij.org/ftp/Haskell/extensible/exteff.pdf) - [Extensible Effects](http://okmij.org/ftp/Haskell/extensible/exteff.pdf)
Much of the implementation is a repackaging and cleaning up of the reference
materials provided [here](http://okmij.org/ftp/Haskell/extensible/).
Much of the implementation is a repackaging and cleaning up of the reference materials provided [here](http://okmij.org/ftp/Haskell/extensible/).
# Features # Features
The key features of Freer are: The key features of `freer-simple` are:
* An efficient effect system for Haskell as a library.
* Implementations for several common Haskell monads as effects:
* `Reader`
* `Writer`
* `State`
* `StateRW`: State in terms of Reader/Writer.
* `Trace`
* `Exception`
* Core components for defining your own Effects.
- An efficient effect system for Haskell as a library.
- Implementations for several common Haskell monads as effects:
- `Reader`
- `Writer`
- `State`
- `StateRW` — State in terms of Reader/Writer.
- `Trace`
- `Exception`
- Core components for defining your own Effects.
# Example: Console DSL # Example: Console DSL
Here's what using Freer looks like: Here's what using `freer-simple` looks like:
```haskell ```haskell
{-# LANGUAGE GADTs #-} {-# LANGUAGE GADTs #-}
@ -51,8 +36,7 @@ Here's what using Freer looks like:
module Console where module Console where
import Control.Monad.Freer import Control.Monad.Freer
import Control.Monad.Freer.Internal import System.Exit hiding (ExitCode(ExitSuccess))
import System.Exit hiding (ExitSuccess)
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Effect Model -- -- Effect Model --
@ -74,86 +58,59 @@ exitSuccess' = send ExitSuccess
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Effectful Interpreter -- -- Effectful Interpreter --
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
runConsole :: Eff '[Console] w -> IO w runConsole :: Eff '[Console, IO] a -> IO a
runConsole (Val x) = return x runConsole = runM . interpretM (\case
runConsole (E u q) = PutStrLn msg -> putStrLn msg
case extract u of GetLine -> getLine
PutStrLn msg -> putStrLn msg >> runConsole (qApp q ()) ExitSuccess -> exitSuccess)
GetLine -> getLine >>= \s -> runConsole (qApp q s)
ExitSuccess -> exitSuccess
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Pure Interpreter -- -- Pure Interpreter --
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
runConsolePure :: [String] -> Eff '[Console] w -> [String] runConsolePure :: [String] -> Eff '[Console] w -> [String]
runConsolePure inputs req = runConsolePure inputs req = snd . fst $
reverse . snd $ run (handleRelayS (inputs, []) (\s _ -> pure s) go req) run (runWriter (runState (runError (reinterpret3 go req)) inputs))
where where
go :: ([String], [String]) go :: Console v -> Eff '[Error (), State [String], Writer [String]] v
-> Console v go (PutStrLn msg) = tell [msg]
-> (([String], [String]) -> Arr '[] v ([String], [String])) go GetLine = get >>= \case
-> Eff '[] ([String], [String]) [] -> error "not enough lines"
go (is, os) (PutStrLn msg) q = q (is, msg : os) () (x:xs) -> put xs >> pure x
go (i:is, os) GetLine q = q (is, os) i go ExitSuccess = throwError ()
go ([], _ ) GetLine _ = error "Not enough lines"
go (_, os) ExitSuccess _ = pure ([], os)
``` ```
# Combining with Transformers
You already have some [`mtl`](http://hackage.haskell.org/package/mtl) code and
are afraid that combining effects with your current tranformer stack would not
be possible? Package
[`freer-effects-extra`](https://github.com/trskop/freer-effects-extra) has some
`mtl`-related and other goodies.
# Contributing # Contributing
Contributions are welcome! Documentation, examples, code, and feedback - they Contributions are welcome! Documentation, examples, code, and feedback - they all help.
all help.
## Developer Setup ## Developer Setup
The easiest way to start contributing is to install The easiest way to start contributing is to install [stack](https://haskellstack.org/). Stack can install GHC/Haskell for you, and automates common developer tasks.
[stack](https://haskellstack.org/). Stack can install GHC/Haskell for you, and
automates common developer tasks.
The key commands are: The key commands are:
* `stack setup` install required version of GHC compiler - `stack setup` — install required version of GHC compiler
* `stack build` builds project, dependencies are automatically resolved - `stack build` — builds project, dependencies are automatically resolved
* `stack test` builds project, its tests, and executes the tests - `stack test` — builds project, its tests, and executes the tests
* `stack bench` builds project, its benchmarks, and executes the benchamks - `stack bench` — builds project, its benchmarks, and executes the benchamks
* `stack ghci` start a REPL instance with a project modules loaded - `stack ghci` — start a REPL instance with a project modules loaded
* `stack clean` - `stack clean`
* `stack haddock` builds documentation - `stack haddock` — builds documentation
For more information about `stack` tool can be found in its
[documentation](https://haskellstack.org/).
More information about `stack` can be found in its [documentation](https://haskellstack.org/).
# Licensing # Licensing
This project is distrubted under a BSD3 license. See the included This project is distrubted under a BSD3 license. See the included
LICENSE file for more details. LICENSE file for more details.
# Acknowledgements # Acknowledgements
Package `freer-effects` started as a fork of Package `freer-effects` started as a fork of [freer-effects](http://hackage.haskell.org/package/freer-effects) by Ixperta Solutions, which in turn is a fork of [freer](http://hackage.haskell.org/package/freer) by Allele Dev. All implementations are based on the paper and reference implementation by Oleg Kiselyov. In particular:
[freer](http://hackage.haskell.org/package/freer) authored by Allele Dev.
This package would not be possible without the paper and the reference - `Data.OpenUnion` maps to [OpenUnion51.hs](http://okmij.org/ftp/Haskell/extensible/OpenUnion51.hs)
implementation. In particular: - `Data.FTCQueue` maps to [FTCQueue1](http://okmij.org/ftp/Haskell/extensible/FTCQueue1.hs)
- `Control.Monad.Freer*` maps to [Eff1.hs](http://okmij.org/ftp/Haskell/extensible/Eff1.hs)
* `Data.OpenUnion` maps to
[OpenUnion51.hs](http://okmij.org/ftp/Haskell/extensible/OpenUnion51.hs)
* `Data.FTCQueue` maps to
[FTCQueue1](http://okmij.org/ftp/Haskell/extensible/FTCQueue1.hs)
* `Control.Monad.Freer*` maps to
[Eff1.hs](http://okmij.org/ftp/Haskell/extensible/Eff1.hs)
There will be deviations from the source. There will be deviations from the source.

View File

@ -1,128 +1,3 @@
# Change Log # 1.0.0.0
All notable changes to this project will be documented in this file. - Initial release.
## [Unreleased]
* Introduced `replaceRelay` and `replaceRelayS`.
[PR #27](https://github.com/IxpertaSolutions/freer-effects/pull/27)
(**new**)
* Fix: `Control.Monad.forever` causes `<<loop>>`
[#23](https://github.com/IxpertaSolutions/freer-effects/issues/23)
(**bug-fix**)
* Switched to hpack format for package description, see [hpack
documentation](https://github.com/sol/hpack#readme) for more details.
Cabal file is still provided, but it is generated from `package.yaml`.
(**change**)
* Coroutines can now return values when they are done. This affects only the
`Done` constructor of `Status` data type.
[PR #25](https://github.com/IxpertaSolutions/freer-effects/pull/25)
(**breaking-change**)
* Introduced new handler `interposeC` for `Yield` effect (coroutines), and
helper function named `replyC`.
[PR #25](https://github.com/IxpertaSolutions/freer-effects/pull/25)
(**new**)
* Introduced `Fresh` effect handlers `runFresh` and `evalFresh`. Function
`runFresh'` was deprecated in favour of `evalFresh`.
[PR #24](https://github.com/IxpertaSolutions/freer-effects/pull/24)
(**new, change**)
* Introduced `raise` to weaken an effect stack.
[PR #41](https://github.com/IxpertaSolutions/freer-effects/pull/41)
(**new**)
* Added support for custom type errors for unsolvable `Member` constraints.
[PR #48](https://github.com/IxpertaSolutions/freer-effects/pull/48)
(**new**)
## [0.3.0.1] (April 16, 2017)
* Relax `hlint` version bounds and disable `hlint` tests in non-developer
builds.
[#31](https://github.com/IxpertaSolutions/freer-effects/issues/31)
## [0.3.0.0] (March 06, 2017)
* Package renamed to `freer-effects` to distinguish it from original `freer`.
[#4](https://github.com/IxpertaSolutions/freer-effects/issues/4)
* Fix `Could not deduce: effs ~ (r : rs)` that may occur when using
a `Member` contraint (a regression introduced in 0.2.4.0)
[freer!12](https://gitlab.com/queertypes/freer/merge_requests/12)
* Add `runNatS` convenience function
[freer!13](https://gitlab.com/queertypes/freer/merge_requests/13)
* Add `evalState` and `execState` convenience functions
[freer!14](https://gitlab.com/queertypes/freer/merge_requests/14)
* Data constructors of `Yield`, `CutFalse`, `Fresh`, `State` and `Trace`
are now exposed in addition to `Error`, `Reader` and `Writer`
* Generalised type signature of `asks`.
[#7](https://github.com/IxpertaSolutions/freer-effects/issues/7)
* Renamed modules `Data.Open.Union.*` to `Data.OpenUnion.*`.
[#8](https://github.com/IxpertaSolutions/freer-effects/issues/8)
* `NonDetEff` separated into its own module and renamed to `NonDet`.
[#11](https://github.com/IxpertaSolutions/freer-effects/issues/11)
* Reimplement `Union` using
<http://okmij.org/ftp/Haskell/extensible/OpenUnion51.hs> as a basis.
[#14](https://github.com/IxpertaSolutions/freer-effects/issues/14)
* Renamed `Teletype` example DSL to `Console`.
## [0.2.4.1] (November 25, 2016)
* Restore GHC (7.8, 7.10) compatibility
## 0.2.4.0 (November 25, 2016)
* Internal reorg
* In particular, hide implementation details in Union.Internal
* Rewrite interpreters in terms of `extract` instead of `decomp`
* Add `runNat` convenience function
## 0.2.3.0 (June 25, 2016)
* Add GHC 8 support
## 0.2.2.2 (Sep. 14, 2015)
* Use local `data Nat` for `Data.Open.Union`
* Using GHC.TypeLits lead to overlapping instances
## 0.2.2.1 (Sep. 14, 2015)
* Document ALL THE THINGS
## 0.2.2.0 (Sep. 13, 2015)
* Add bench suite
## 0.2.1.0 (Sep. 13, 2015)
* Add test suite
## 0.2.0.2 (Sep. 12, 2015)
* Clean up language extensions per file
* Add Teletype DSL to the README
## 0.2.0.1 (Sep. 12, 2015)
* Add Teletype DSL example
* Expose `send` in public interface
## 0.2.0.0 (Sep. 12, 2015)
* Implement NonDetEff
* Separate Cut/Coroutine out from Internals
* Partial implementation: won't compile yet
* Extract remaining examples from Internal comments
## 0.1.1.0 (Sep. 12, 2015)
* Warnings clean up
* Examples separated from primary implementation
* Initial project documentation added
## 0.1.0.0 (Sep. 12, 2015)
* Initial release
[Unreleased]: https://github.com/IxpertaSolutions/freer/compare/0.3.0.1...HEAD
[0.3.0.1]: https://github.com/IxpertaSolutions/freer/compare/0.3.0.0...0.3.0.1
[0.3.0.0]: https://github.com/IxpertaSolutions/freer/compare/0.2.4.1...0.3.0.0
[0.2.4.1]: https://github.com/IxpertaSolutions/freer/compare/0.2.4.0...0.2.4.1

View File

@ -1,125 +0,0 @@
-- This file has been generated from package.yaml by hpack version 0.18.1.
--
-- see: https://github.com/sol/hpack
name: freer-effects
version: 0.3.0.0
synopsis: Implementation of effect system for Haskell.
description: Implementation of effect system for Haskell (actively maintained fork of
<http://hackage.haskell.org/package/freer freer>), which is based on the
work of Oleg Kiselyov et al.:
.
* <http://okmij.org/ftp/Haskell/extensible/more.pdf Freer Monads, More Extensible Effects>
* <http://okmij.org/ftp/Haskell/zseq.pdf Reflection without Remorse>
* <http://okmij.org/ftp/Haskell/extensible/exteff.pdf Extensible Effects>
.
The key features are:
.
* An efficient effect system for Haskell - as a library!
* Reimplementations of several common Haskell monad transformers as effects.
* Core components for defining your own Effects.
category: Control
homepage: https://github.com/lexi-lambda/freer-effects#readme
bug-reports: https://github.com/lexi-lambda/freer-effects/issues
author: Allele Dev, Ixcom Core Team, Alexis King, and other contributors
maintainer: Alexis King <lexi.lambda@gmail.com>
copyright: (c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.; 2017 Alexis King
license: BSD3
license-file: LICENSE
build-type: Simple
cabal-version: >= 1.10
extra-source-files:
changelog.md
README.md
source-repository head
type: git
location: https://github.com/lexi-lambda/freer-effects
library
hs-source-dirs:
src
default-extensions: ConstraintKinds DataKinds DeriveFunctor FlexibleContexts FlexibleInstances GADTs LambdaCase MultiParamTypeClasses RankNTypes ScopedTypeVariables TypeApplications TypeOperators
ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
build-depends:
base >= 4.9 && < 5
, natural-transformation >= 0.2
, transformers-base
exposed-modules:
Control.Monad.Freer
Control.Monad.Freer.Coroutine
Control.Monad.Freer.Cut
Control.Monad.Freer.Error
Control.Monad.Freer.Fresh
Control.Monad.Freer.Internal
Control.Monad.Freer.NonDet
Control.Monad.Freer.Reader
Control.Monad.Freer.State
Control.Monad.Freer.StateRW
Control.Monad.Freer.Trace
Control.Monad.Freer.Writer
Data.FTCQueue
Data.OpenUnion
Data.OpenUnion.Internal
other-modules:
Paths_freer_effects
default-language: Haskell2010
executable freer-examples
main-is: Main.hs
hs-source-dirs:
examples/src
default-extensions: ConstraintKinds DataKinds DeriveFunctor FlexibleContexts FlexibleInstances GADTs LambdaCase MultiParamTypeClasses RankNTypes ScopedTypeVariables TypeApplications TypeOperators
ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
build-depends:
base >= 4.9 && < 5
, freer-effects
other-modules:
Capitalize
Console
Coroutine
Cut
Fresh
Trace
default-language: Haskell2010
test-suite unit
type: exitcode-stdio-1.0
main-is: Tests.hs
hs-source-dirs:
tests
default-extensions: ConstraintKinds DataKinds DeriveFunctor FlexibleContexts FlexibleInstances GADTs LambdaCase MultiParamTypeClasses RankNTypes ScopedTypeVariables TypeApplications TypeOperators
ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints
build-depends:
base >= 4.9 && < 5
, QuickCheck
, freer-effects
, tasty
, tasty-hunit
, tasty-quickcheck
other-modules:
Tests.Coroutine
Tests.Exception
Tests.Fresh
Tests.Loop
Tests.NonDet
Tests.Reader
Tests.State
default-language: Haskell2010
benchmark core
type: exitcode-stdio-1.0
main-is: Core.hs
hs-source-dirs:
bench
default-extensions: ConstraintKinds DataKinds DeriveFunctor FlexibleContexts FlexibleInstances GADTs LambdaCase MultiParamTypeClasses RankNTypes ScopedTypeVariables TypeApplications TypeOperators
ghc-options: -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -O2
build-depends:
base >= 4.9 && < 5
, criterion
, extensible-effects >= 1.11 && < 1.12
, free
, freer-effects
, mtl
default-language: Haskell2010

View File

@ -1,11 +1,11 @@
name: freer-effects name: freer-simple
version: 0.3.0.0 version: 1.0.0.0
category: Control category: Control
synopsis: Implementation of effect system for Haskell. synopsis: Implementation of an effect system for Haskell.
description: | description: |
Implementation of effect system for Haskell (actively maintained fork of An implementation of an effect system for Haskell (a fork of
<http://hackage.haskell.org/package/freer freer>), which is based on the <http://hackage.haskell.org/package/freer-effects freer-effects>), which is
work of Oleg Kiselyov et al.: based on the work of Oleg Kiselyov et al.:
* <http://okmij.org/ftp/Haskell/extensible/more.pdf Freer Monads, More Extensible Effects> * <http://okmij.org/ftp/Haskell/extensible/more.pdf Freer Monads, More Extensible Effects>
* <http://okmij.org/ftp/Haskell/zseq.pdf Reflection without Remorse> * <http://okmij.org/ftp/Haskell/zseq.pdf Reflection without Remorse>
@ -16,16 +16,16 @@ description: |
* An efficient effect system for Haskell - as a library! * An efficient effect system for Haskell - as a library!
* Reimplementations of several common Haskell monad transformers as effects. * Reimplementations of several common Haskell monad transformers as effects.
* Core components for defining your own Effects. * Core components for defining your own Effects.
github: lexi-lambda/freer-effects
github: lexi-lambda/freer-simple
license: BSD3 license: BSD3
author: Allele Dev, Ixcom Core Team, Alexis King, and other contributors author: Allele Dev, Ixcom Core Team, Alexis King, and other contributors
maintainer: Alexis King <lexi.lambda@gmail.com> maintainer: Alexis King <lexi.lambda@gmail.com>
copyright: (c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.; 2017 Alexis King copyright: (c) 2016 Allele Dev; 2017 Ixperta Solutions s.r.o.; 2017 Alexis King
extra-source-files: extra-source-files:
- CHANGELOG.md
- README.md - README.md
- changelog.md
ghc-options: ghc-options:
- -Wall - -Wall
@ -62,7 +62,7 @@ executables:
source-dirs: examples/src source-dirs: examples/src
main: Main.hs main: Main.hs
dependencies: dependencies:
- freer-effects - freer-simple
tests: tests:
unit: unit:
@ -70,7 +70,7 @@ tests:
main: Tests.hs main: Tests.hs
dependencies: dependencies:
- QuickCheck - QuickCheck
- freer-effects - freer-simple
- tasty - tasty
- tasty-hunit - tasty-hunit
- tasty-quickcheck - tasty-quickcheck
@ -82,7 +82,7 @@ benchmarks:
ghc-options: -O2 ghc-options: -O2
dependencies: dependencies:
- criterion - criterion
- extensible-effects >= 1.11 && < 1.12 - extensible-effects
- free - free
- freer-effects - freer-simple
- mtl - mtl