Describe what is currently implemented.
[hope.git] / README.md
CommitLineData
d45d190d
SK
1[![Build Status](https://travis-ci.org/ibnfirnas/hope.svg?branch=master)](https://travis-ci.org/ibnfirnas/hope)
2
6903fabb 3Higher Order Programming in Erlang
a11ea326
SK
4==================================
5
6A quest for a "standard" library with uniform, composable abstractions.
d2ab44d2
SK
7
8
9Monads
10------
11
12Defined in `hope_gen_monad`, implemented as:
13
14- `hope_result`: for composition of common functions returning
15 `{ok, Val} | {error, Reason}`. An alternative to exceptions, which makes the
16 error conditions apparent in the spec/signature. Analogous to Haskell's
17 `Data.Either a b`, Jane Street Core's (OCaml) `('a, 'b) Result.t`, Rust's
18 `Result<T, E>`
19- `hope_option`: for expressing and composing the intention that the value may
20 or may not be available. An alternative to the common `undefined` (which is
21 equivalent to the dreaded `null`). Analogous to ML's (SML, OCaml, etc)
22 `'a Option.t`, Rust's `Option<T>` and Haskell's `Data.Maybe a` [1].
23
24
25Containers
26----------
27
28### Dictionary
29
30Defined in `hope_gen_dictionary`, implemented as:
31
32- `hope_kv_list`. Equivalent to orddict/proplist. Operations implemented with
33 BIFs from `lists` module, where possible
34
35
36[1]: http://en.wikipedia.org/wiki/Option_type
This page took 0.029114 seconds and 4 git commands to generate.