Popularity
7.8
Growing
Activity
8.5
Declining
34
5
1

Monthly Downloads: 30
Programming language: Haskell
License: MIT License
Tags: Control     Effect    
Latest version: v0.1.0.0

eveff alternatives and similar packages

Based on the "Control" category

Do you think we are missing an alternative of eveff or a related project?

Add another 'Control' Package

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).