Skip to content
/ hashp Public
forked from weavejester/hashp

A better "prn" for debugging

License

Notifications You must be signed in to change notification settings

PEZ/hashp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hashp

Hashp is a better prn for debugging Clojure code. Inspired by projects like Spyscope, Hashp (ab)uses data readers to make it easier to get useful debugging data sent to STDOUT.

Usage

Once installed, you can add #p in front of any form you wish to print:

(ns example.core)

(defn mean [xs]
  (/ (double #p (reduce + xs)) #p (count xs)))

It's faster to type than (prn ...), returns the original result, and produces more useful output by printing the original form, function and line number:

user=> (mean [1 4 5 2])
#p[example.core/mean:4] (reduce + xs) => 12
#p[example.core/mean:4] (count xs) => 4
3.0

Install

Leiningen

Add the following to ~/.lein/profiles.clj:

{:user
 {:dependencies [[hashp "0.2.1"]]
  :injections [(require 'hashp.core)]}}

Boot

Add the following to ~/.boot/profile.boot:

(set-env! :dependencies #(conj % '[hashp "0.2.1"]))

(require 'hashp.core)
(boot.core/load-data-readers!)

Shadow-CLJS

Add the following to shadow-cljs.edn:

{:dependencies [hashp "0.2.1"]
 :builds {:app {:devtools {:preloads [hashp.core]}}}}

Or alternatively via ~/.shadow-cljs/config.edn and --config-merge:

~/.shadow-cljs/config.edn:

{:dependencies [[hashp "0.2.1"]]}

Run:

shadow-cljs watch app --config-merge '{:devtools {:preloads [hashp.core]}}'

License

Copyright © 2021 James Reeves

Released under the MIT license.

About

A better "prn" for debugging

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Clojure 100.0%