<commit_before># ![Logo](https://raw.githubusercontent.com/clarus/icons/master/castle-48.png) Error Handlers *beta*
Simple. Robust. Ubiquitous.

## Install
### With OPAM
Add the Coq unstable repository:

    opam repo add coq-unstable https://github.com/coq/repo-unstable.git

and run:

    opam install coq:error-handlers

### From the sources
Do a classic:

    ./configure.sh
    make
    make install

## Use
Add:

    Require Import ErrorHandlers.All.

at the beginning of your source files. It will import the following functions:
* `Option.bind : forall {A B : Type}, option A -> (A -> option B) -> option B`
* `Sum.bind : forall {E A B : Type}, A + E -> (A -> B + E) -> B + E`<commit_msg>Updated README for the new OPAM urls<commit_after># ![Logo](https://raw.githubusercontent.com/clarus/icons/master/castle-48.png) Error Handlers
Simple. Robust. Ubiquitous.

## Install
### With OPAM
Add the Coq repository:

    opam repo add coq-released https://coq.inria.fr/opam/released

and run:

    opam install -j4 coq:error-handlers

### From the sources
Do a classic:

    ./configure.sh
    make
    make install

## Use
Add:

    Require Import ErrorHandlers.All.

at the beginning of your source files. It will import the following functions:
* `Option.bind : forall {A B : Type}, option A -> (A -> option B) -> option B`
* `Sum.bind : forall {E A B : Type}, A + E -> (A -> B + E) -> B + E`
{'fraction_non_alphanumeric': 0.13314244810307801, 'fraction_numerical': 0.0035790980672870437, 'mean_word_length': 3.136094674556213, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 15, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6139094', 'n_tokens_mistral': 490, 'n_tokens_neox': 464, 'n_words': 162}