pr-foobar
is a collection of print debugging macros combining the
functionality of AlexBaranosky/print-foo with
cldwalker/table.
The following macros are provided:
pr->
pr->>
pr-let
pr-when-let
pr-if-let
pr-if
pr-if-not
pr-when
pr-when-not
pr-cond
pr-and
pr-or
user> (pr-let [a (map inc (range 5))
b (filter even? a)
c (reduce + b)]
[a b c])
┌────────┬───────────────────────┐
│ let │ value │
├────────┼───────────────────────┤
│ a ╎ (1 2 3 4 5) │
│ b ╎ (2 4) │
│ c ╎ 6 │
│ RESULT ╎ [(1 2 3 4 5) (2 4) 6] │
└────────┴───────────────────────┘
[(1 2 3 4 5) (2 4) 6]
user>
Exceptions are handled gracefully, so using pr-foobar
is a fast way to get an
idea when your code is failing:
user> (pr->> (range 5) rest first dec (/ 1) str)
┌──────────────────────────────────┬───────────────────────────────────────────────────────────────┐
│ ->> clojure.lang.LazySeq@1b554e1 │ step │
├──────────────────────────────────┼───────────────────────────────────────────────────────────────┤
│ rest ╎ (1 2 3 4) │
│ first ╎ 1 │
│ dec ╎ 0 │
│ (/ 1) ╎ #<ArithmeticException java.lang.ArithmeticException: Divid... │
└──────────────────────────────────┴───────────────────────────────────────────────────────────────┘
ArithmeticException Divide by zero clojure.lang.Numbers.divide (Numbers.java:156)
Add:
as a dependency. You may wish to add it to your ~/.lein/profiles.clj
or
~/.profile.boot
files to have it available with all of your projects.
To use it:
(use 'pr.foobar)
Or you might consider using a tool like vinyasa to have it required and available in all of your namespaces.
You should be careful about using pr-foobar
with side-effectful code, as the
results of an expression may be evaluated multiple times in the macro call.
Doesn't play well with infinite lazy sequences.
Copyright © Olli Piepponen 2015
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.