Popularity
8.7
Stable
Activity
1.3
Growing
71
8
5
Monthly Downloads: 6
Programming language: Haskell
License: MIT License
Latest version: v1.0.0.1
eveff alternatives and similar packages
Based on the "Control" category.
Alternatively, view eveff alternatives based on common mentions on social networks and blogs.
-
transient
A full stack, reactive architecture for general purpose programming. Algebraic and monadically composable primitives for concurrency, parallelism, event handling, transactions, multithreading, Web, and distributed computing with complete de-inversion of control (No callbacks, no blocking, pure state) -
distributed-closure
Serializable closures for distributed programming. -
extensible-effects
Extensible Effects: An Alternative to Monad Transformers -
classy-prelude
Type classes for mapping, folding, and traversing monomorphic containers -
auto
Haskell DSL and platform providing denotational, compositional api for discrete-step, locally stateful, interactive programs, games & automations. http://hackage.haskell.org/package/auto -
selective
Selective Applicative Functors: Declare Your Effects Statically, Select Which to Execute Dynamically -
classy-prelude-yesod
Type classes for mapping, folding, and traversing monomorphic containers -
abstract-par
Type classes generalizing the functionality of the 'monad-par' library. -
these
An either-or-both data type, with corresponding hybrid error/writer monad transformer. -
hask
Category theory for Haskell with a lens flavor (you need GHC 7.8.3, not 7.8.2 to build this!) -
ComonadSheet
A library for expressing "spreadsheet-like" computations with absolute and relative references, using fixed-points of n-dimensional comonads. -
transient-universe
A Cloud monad based on transient for the creation of Web and reactive distributed applications that are fully composable, where Web browsers are first class nodes in the cloud -
cloud-haskell
This is an umbrella development repository for Cloud Haskell -
distributed-process-platform
DEPRECATED (Cloud Haskell Platform) in favor of distributed-process-extras, distributed-process-async, distributed-process-client-server, distributed-process-registry, distributed-process-supervisor, distributed-process-task and distributed-process-execution -
distributed-fork
A distributed data processing framework in Haskell. -
monad-validate
(NOTE: REPOSITORY MOVED TO NEW OWNER: https://github.com/lexi-lambda/monad-validate) A Haskell monad transformer library for data validation -
monad-control
Lift control operations, like exception catching, through monad transformers -
ixmonad
Provides 'graded monads' and 'parameterised monads' to Haskell, enabling fine-grained reasoning about effects. -
effect-monad
Provides 'graded monads' and 'parameterised monads' to Haskell, enabling fine-grained reasoning about effects. -
freer-effects
An implementation of "Freer Monads, More Extensible Effects". -
operational
Implement monads by specifying instructions and their desired operational semantics. -
monad-time
Type class for monads which carry the notion of the current time.
Clean code begins in your IDE with SonarLint
Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.
Promo
www.sonarlint.org
Do you think we are missing an alternative of eveff or a related project?
README
EvEff: Efficient effect handlers based on Evidence translation
Efficient effect handlers based on evidence translation [1]. The interface and design is described in detail in "Effect Handlers in Haskell, Evidently", Ningning Xie and Daan Leijen, Haskell 2020.
Installation:
- First install stack
- Build with
> stack build
- Load examples:
> stack ghci eveff:lib .. ghci> runEff helloWorld "hello world"
An example of defining and using a Reader
effect:
{-# LANGUAGE TypeOperators, FlexibleContexts, Rank2Types #-}
import Control.Ev.Eff
-- A @[email protected] effect definition with one operation @[email protected] of type @()@ to @[email protected]
data Reader a e ans = Reader{ ask :: Op () a e ans }
greet :: (Reader String :? e) => Eff e String
greet = do s <- perform ask ()
return ("hello " ++ s)
test :: String
test = runEff $
handler (Reader{ ask = value "world" }) $ -- @:: Reader String () [email protected]
do s <- greet -- executes in context @:: Eff (Reader String :* ()) [email protected]
return s
Enjoy,
Daan Leijen and Ningning Xie, May 2020.
[1] "Effect Handlers, Evidently", Ningning Xie et al., ICFP 2020 (pdf).