Liking cljdoc? Tell your friends :D

merr

GitHub Actions for test workflow GitHub Actions for lint workflow Dependencies Status codecov Clojars Project cljdoc badge

Minimal and good enough error handling library for Clojure/ClojureScript

This library is based on "Good Enough" error handling in Clojure.

Concept

  • Easy to imagine behavior

  • Minimum to remember

    • All usage and examples are documented in docstring

=> (require '[merr.core :as merr])
nil

;; for ClojureScript
;; (require '[merr.core :as merr :include-macros true])

=> (merr/let +err+ [foo 1
=>                  bar (merr/err)
=>                  baz (* bar 2)]
=>   {:+err+ +err+ :foo foo :bar bar :baz baz})
{:+err+ (merr/err), :foo 1, :bar nil, :baz nil}

Usage

error record

(defrecord MerrError [type message data cause])

let

=> (merr/let err [a 10
=>                b (inc a)
=>                c (inc b)]
=>   (if err
=>     (merr/message err)
=>     (str "c = " c)))
"c = 12"

=> (merr/let err [a 10
=>                b (merr/err {:message "ERROR"})
=>                c (inc b)]
=>   (if err
=>     (merr/message err)
=>     (str "c = " c)))
"ERROR"

err-if

=> (merr/err-if 1 even?)
1

=> (merr/err-if 1 odd? {:message "ERROR"})
(merr/err {:message "ERROR"})

=> (merr/-> 10 (+ 1) (- 1))
10

=> (merr/-> 10 ((fn [_] (merr/err))) (- 1))
(merr/err)

=> (merr/-> 10 (merr/err-if even?) (- 1))
(merr/err)

=> (merr/-> 10 (merr/err-if odd?) (- 1))
9

→>

=> (merr/->> 10 (+ 1) (- 1))
-10

=> (merr/->> 10 ((fn [_] (merr/err))) (- 1))
(merr/err)

License

Copyright © 2018-2020 Masashi Iizuka

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close