|
4 | 4 | .. image:: https://travis-ci.org/python-effect/effect.svg?branch=master |
5 | 5 | :target: https://travis-ci.org/python-effect/effect |
6 | 6 |
|
7 | | -Effect is a library for helping you write purely functional code by |
8 | | -isolating the effects (that is, IO or state manipulation) in your code. |
9 | | -Documentation is available at https://effect.readthedocs.org/. |
10 | | - |
11 | | -.. image:: https://radix.github.io/effect/sigh-defects.png |
12 | | - :target: https://twitter.com/extempore2/status/553597279463305218 |
| 7 | +Effect is a library for helping you write purely functional code by isolating |
| 8 | +the effects (that is, IO or state manipulation) in your code. Documentation is |
| 9 | +available at https://effect.readthedocs.org/, and its PyPI page is |
| 10 | +https://pypi.python.org/pypi/effect. |
13 | 11 |
|
| 12 | +It `supports`_ both Python 2.6 and up, and 3.4 and up, as well as PyPy. |
14 | 13 |
|
| 14 | +.. _`supports`: https://travis-ci.org/python-effect/effect |
15 | 15 |
|
16 | | -Status: Alpha |
17 | | -============= |
| 16 | +You can install it by running ``pip install effect``. |
18 | 17 |
|
19 | | -Right now Effect is in alpha, and is likely to change incompatibly. Once it's |
20 | | -being used in production and the API seems pretty good, a final version will be |
21 | | -released. Because it's in alpha, ``pip`` requires that you explicitly specify |
22 | | -the version number when specifying a dependency. This means that you won't |
23 | | -automatically get upgraded to newer versions that potentially break the API. |
24 | | -e.g., use `pip install effect==0.1aN`. |
| 18 | +.. image:: https://radix.github.io/effect/sigh-defects.png |
| 19 | + :target: https://twitter.com/extempore2/status/553597279463305218 |
25 | 20 |
|
26 | 21 |
|
27 | 22 | What Is It? |
28 | 23 | =========== |
29 | 24 |
|
30 | | -Effect lets you isolate your IO and state-manipulation code, by using a system |
31 | | -very similar to Haskell's `extensible-effects`_ package. It also has |
32 | | -similarities to Twisted's Deferred objects. |
33 | | - |
34 | | -.. _`extensible-effects`: https://hackage.haskell.org/package/extensible-effects |
| 25 | +Effect lets you isolate your IO and state-manipulation code. |
35 | 26 |
|
36 | 27 | The benefits of this are many: first, the majority of your code can become |
37 | 28 | purely functional, leading to easier testing and ability to reason about |
38 | 29 | behavior. Also, because it separates the specification of an effect from the |
39 | 30 | performance of the effect, there are two more benefits: testing becomes easier |
40 | 31 | still, and it's easy to provide alternative implementations of effects. |
41 | 32 |
|
| 33 | +Effect is somewhat similar to "algebraic effects", as implemented in various |
| 34 | +typed functional programming languages. It also has similarities to Twisted's |
| 35 | +Deferred objects. |
42 | 36 |
|
43 | 37 | Example |
44 | 38 | ======= |
|
0 commit comments