-[![Build Status](https://travis-ci.org/ibnfirnas/hope.svg?branch=master)](https://travis-ci.org/ibnfirnas/hope)
+[![Build Status](https://travis-ci.org/xandkar/hope.svg?branch=master)](https://travis-ci.org/xandkar/hope)
Hope
====
- Names of public records _must_ be fully qualified, such as: `#hope_module_record{}`
- Names of all modules _must_ be fully qualified, such as: `hope_module` (this
should go without saying, but just to be sure...)
+- Keep the number of (anonymous) arguments "reasonably" low:
+ + up to 3 is normal
+ + 4 is suspicious but may be reasonable
+ + 5 is _very_ suspicious and probably unnecessary
+ + more than 5 is unacceptable, so consider reducing by:
+ 1. revising abstractions, or, if not practical
+ 2. creating a public record specifically for the purpose of passing
+ many arguents, which simulates labeled arguments. For an example see
+ https://github.com/xandkar/oauth1_core where I used that technique
+ extensively (especially in oauth1_server.erl)
Abstractions
### Monads
-A class of burritos, used for sequencing operations on a particular data type.
-Defined in `hope_gen_monad`, implemented as:
+A class of burritos, used for expressing sequences of operations on some data
+type. Defined in `hope_gen_monad`, implemented as:
- `hope_result`: for composition of common functions returning
`{ok, Val} | {error, Reason}`. An alternative to exceptions, which makes the