KO
|
EN
gitlite — search
Search
#javascript
#python
#php
#java
#plugin
#ruby
#android
#css
#node
#xml
#dotfiles
#shell
cleff
★ 46
Open GitHub ↗
Algebraic Effect Handlers for Clojure
Download README (.md)
Explore Similar Repositories
rip
:
album ripper
status-code
:
Status codes for HTTP
wordpress-nginx
:
Chef cookbook to create Nginx sites for WordPress applications
Persistence1D
:
Persistence1D is a class for finding local extrema and their persistence in one-dimensional data.
cascading-cassandra
:
Modern Cassandra tap for Cascading. Actually works with Cascading 2.0, Cascalog 1.10 and supports CQL collections.
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
cleff
?
Download (.md)
# Cleff Cleff provides a framework for extensible handling of computational effects. The design is heavily inspired by the Eff programming language. This project aims to provide a proof of concept implementation of all of the examples in [Programming with Algebraic Effects and Handlers][1] by Bauer and Pretnar. ## Status The basics of first-class effects and handlers are working. Here's a simple non-deterministic choice effect: ```clojure (defn choose-all [c] (handler (value [x] [x]) c (decide [] (concat (continue true) (continue false))))) (let [c (choice)] (handle-with (choose-all c) (let [x (if (effect c 'decide) 10 20) y (if (effect c 'decide) 0 5)] (- x y)))) ;;=> (10 5 20 15) ``` Lots left to do: - Polish up the syntax - defprotocol-style defeffect - Subroutines for coping with core.async's lexical IOC See the `test/` directory for some more examples. ## License Copyright © 2013 Brandon Bloom Distributed under the Eclipse Public License, the same as Clojure. [1]: http://math.andrej.com/2012/03/08/programming-with-algebraic-effects-and-handlers/