Popularity
8.7
Stable
Activity
2.6
Growing
74
9
5
Monthly Downloads: 14
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) -
classy-prelude
Type classes for mapping, folding, and traversing monomorphic containers -
classy-prelude-yesod
Type classes for mapping, folding, and traversing monomorphic containers -
distributed-closure
Serializable closures for distributed programming. -
these
An either-or-both data type, with corresponding hybrid error/writer monad transformer. -
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 -
extensible-effects
Extensible Effects: An Alternative to Monad Transformers -
ComonadSheet
A library for expressing "spreadsheet-like" computations with absolute and relative references, using fixed-points of n-dimensional comonads. -
abstract-par
Type classes generalizing the functionality of the 'monad-par' library. -
hask
Category theory for Haskell with a lens flavor (you need GHC 7.8.3, not 7.8.2 to build this!) -
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-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 -
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 -
monad-control
Lift control operations, like exception catching, through monad transformers -
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". -
ixmonad
Provides 'graded monads' and 'parameterised monads' to Haskell, enabling fine-grained reasoning about 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.
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Promo
www.influxdata.com
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 @Reader@ effect definition with one operation @ask@ of type @()@ to @a@.
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 () Int@
do s <- greet -- executes in context @:: Eff (Reader String :* ()) Int@
return s
Enjoy,
Daan Leijen and Ningning Xie, May 2020.
[1] "Effect Handlers, Evidently", Ningning Xie et al., ICFP 2020 (pdf).