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
sudo: false
cache:
directories:
- $HOME/.cabsnap
- $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
- $HOME/.stack
# 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:
include:
- env: CABALVER=1.18 GHCVER=7.8.4 HAPPYVER=1.19.3 DO_CHECKS=0
compiler: ": #GHC 7.8.4"
addons: {apt: {packages: [cabal-install-1.18, ghc-7.8.4, happy-1.19.3], sources: [hvr-ghc]}}
- env: CABALVER=1.22 GHCVER=7.10.3 HAPPYVER=1.19.4 DO_CHECKS=0
compiler: ": #GHC 7.10.3"
addons: {apt: {packages: [cabal-install-1.22, ghc-7.10.3, happy-1.19.4], sources: [hvr-ghc]}}
- env: CABALVER=1.24 GHCVER=8.0.1 HAPPYVER=1.19.5 DO_CHECKS=1
compiler: ": #GHC 8.0.1"
addons: {apt: {packages: [cabal-install-1.24, ghc-8.0.1, happy-1.19.5], sources: [hvr-ghc]}}
- env: CABALVER=1.24 GHCVER=8.0.2 HAPPYVER=1.19.5 DO_CHECKS=1
compiler: ": #GHC 8.0.2"
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
compiler: ": #GHC head"
addons: {apt: {packages: [cabal-install-head, ghc-head, happy-1.19.5], sources: [hvr-ghc]}}
- env: ARGS="--resolver lts-7"
compiler: ": #stack 8.0.1"
addons: { apt: { packages: [libgmp-dev] } }
- env: ARGS="--resolver lts-8"
compiler: ": #stack 8.0.2"
addons: { apt: { packages: [libgmp-dev] } }
- env: ARGS="--resolver nightly-2017-07-31"
compiler: ": #stack 8.2.1"
addons: { apt: { packages: [libgmp-dev] } }
- env: ARGS="--resolver nightly"
compiler: ": #stack nightly"
addons: { apt: { packages: [libgmp-dev] } }
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:
- unset CC
- export PATH=/opt/happy/$HAPPYVER/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
- CABALFLAGS=(--enable-tests --enable-benchmarks --flags="pedantic test-hlint")
# Using compiler above sets CC to an invalid value, so unset it
- unset CC
# 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:
- cabal --version
- 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
- stack --no-terminal --install-ghc $ARGS test --bench --only-dependencies
# 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:
- if [ -f configure.ac ]; then autoreconf -i; fi
# 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
- stack --no-terminal $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps --ghc-options=-Werror

139
README.md
View File

@ -1,47 +1,32 @@
# Freer Effects: Extensible Effects with Freer Monads
[![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)
# 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)
# Description
Library `freer-effects` (actively maintained fork of
[`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.:
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 Monads, More Extensible Effects](http://okmij.org/ftp/Haskell/extensible/more.pdf)
* [Reflection without Remorse](http://okmij.org/ftp/Haskell/zseq.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/).
- [Freer Monads, More Extensible Effects](http://okmij.org/ftp/Haskell/extensible/more.pdf)
- [Reflection without Remorse](http://okmij.org/ftp/Haskell/zseq.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/).
# Features
The key features of Freer 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.
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.
# Example: Console DSL
Here's what using Freer looks like:
Here's what using `freer-simple` looks like:
```haskell
{-# LANGUAGE GADTs #-}
@ -51,16 +36,15 @@ Here's what using Freer looks like:
module Console where
import Control.Monad.Freer
import Control.Monad.Freer.Internal
import System.Exit hiding (ExitSuccess)
import System.Exit hiding (ExitCode(ExitSuccess))
--------------------------------------------------------------------------------
-- Effect Model --
--------------------------------------------------------------------------------
data Console s where
PutStrLn :: String -> Console ()
GetLine :: Console String
ExitSuccess :: Console ()
PutStrLn :: String -> Console ()
GetLine :: Console String
ExitSuccess :: Console ()
putStrLn' :: Member Console r => String -> Eff r ()
putStrLn' = send . PutStrLn
@ -74,86 +58,59 @@ exitSuccess' = send ExitSuccess
--------------------------------------------------------------------------------
-- Effectful Interpreter --
--------------------------------------------------------------------------------
runConsole :: Eff '[Console] w -> IO w
runConsole (Val x) = return x
runConsole (E u q) =
case extract u of
PutStrLn msg -> putStrLn msg >> runConsole (qApp q ())
GetLine -> getLine >>= \s -> runConsole (qApp q s)
ExitSuccess -> exitSuccess
runConsole :: Eff '[Console, IO] a -> IO a
runConsole = runM . interpretM (\case
PutStrLn msg -> putStrLn msg
GetLine -> getLine
ExitSuccess -> exitSuccess)
--------------------------------------------------------------------------------
-- Pure Interpreter --
--------------------------------------------------------------------------------
runConsolePure :: [String] -> Eff '[Console] w -> [String]
runConsolePure inputs req =
reverse . snd $ run (handleRelayS (inputs, []) (\s _ -> pure s) go req)
runConsolePure inputs req = snd . fst $
run (runWriter (runState (runError (reinterpret3 go req)) inputs))
where
go :: ([String], [String])
-> Console v
-> (([String], [String]) -> Arr '[] v ([String], [String]))
-> Eff '[] ([String], [String])
go (is, os) (PutStrLn msg) q = q (is, msg : os) ()
go (i:is, os) GetLine q = q (is, os) i
go ([], _ ) GetLine _ = error "Not enough lines"
go (_, os) ExitSuccess _ = pure ([], os)
go :: Console v -> Eff '[Error (), State [String], Writer [String]] v
go (PutStrLn msg) = tell [msg]
go GetLine = get >>= \case
[] -> error "not enough lines"
(x:xs) -> put xs >> pure x
go ExitSuccess = throwError ()
```
# 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
Contributions are welcome! Documentation, examples, code, and feedback - they
all help.
Contributions are welcome! Documentation, examples, code, and feedback - they all help.
## Developer Setup
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.
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.
The key commands are:
* `stack setup` install required version of GHC compiler
* `stack build` builds project, dependencies are automatically resolved
* `stack test` builds project, its tests, and executes the tests
* `stack bench` builds project, its benchmarks, and executes the benchamks
* `stack ghci` start a REPL instance with a project modules loaded
* `stack clean`
* `stack haddock` builds documentation
For more information about `stack` tool can be found in its
[documentation](https://haskellstack.org/).
- `stack setup` — install required version of GHC compiler
- `stack build` — builds project, dependencies are automatically resolved
- `stack test` — builds project, its tests, and executes the tests
- `stack bench` — builds project, its benchmarks, and executes the benchamks
- `stack ghci` — start a REPL instance with a project modules loaded
- `stack clean`
- `stack haddock` — builds documentation
More information about `stack` can be found in its [documentation](https://haskellstack.org/).
# Licensing
This project is distrubted under a BSD3 license. See the included
LICENSE file for more details.
# Acknowledgements
Package `freer-effects` started as a fork of
[freer](http://hackage.haskell.org/package/freer) authored by Allele Dev.
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:
This package would not be possible without the paper and the reference
implementation. In particular:
* `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)
- `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.

View File

@ -1,128 +1,3 @@
# Change Log
# 1.0.0.0
All notable changes to this project will be documented in this file.
## [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
- Initial release.

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
version: 0.3.0.0
name: freer-simple
version: 1.0.0.0
category: Control
synopsis: Implementation of effect system for Haskell.
synopsis: Implementation of an 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.:
An implementation of an effect system for Haskell (a fork of
<http://hackage.haskell.org/package/freer-effects freer-effects>), 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>
@ -16,16 +16,16 @@ description: |
* 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.
github: lexi-lambda/freer-effects
github: lexi-lambda/freer-simple
license: BSD3
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
extra-source-files:
- CHANGELOG.md
- README.md
- changelog.md
ghc-options:
- -Wall
@ -62,7 +62,7 @@ executables:
source-dirs: examples/src
main: Main.hs
dependencies:
- freer-effects
- freer-simple
tests:
unit:
@ -70,7 +70,7 @@ tests:
main: Tests.hs
dependencies:
- QuickCheck
- freer-effects
- freer-simple
- tasty
- tasty-hunit
- tasty-quickcheck
@ -82,7 +82,7 @@ benchmarks:
ghc-options: -O2
dependencies:
- criterion
- extensible-effects >= 1.11 && < 1.12
- extensible-effects
- free
- freer-effects
- freer-simple
- mtl