Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Clojure REPL stores the latest results in *1, *2, *3, exception in *e

DZone's Guide to

Clojure REPL stores the latest results in *1, *2, *3, exception in *e

· Java Zone ·
Free Resource

Verify, standardize, and correct the Big 4 + more– name, email, phone and global addresses – try our Data Quality APIs now at Melissa Developer Portal!

All Clojure REPL variants (nREPL, REPLy, ..) share some common characteristics, inherited from clojure.main and clojure.repl. One of them, that isn’t easy to find out (unless you read e.g. Clojure Programming) is the fact that the last three results of evaluating your code are stored in the vars *1*2, and *3. The last exception that has occured is stored in *e.

Example:

;; Inside lein repl, with the user=> prefix removed and output prefixed with ;; =>
1
;; => 1
2
;; => 2
3
;; => 3
4
;; => 4
(println "results - latest:" *1 "prev:" *2 "oldest:" *3)
;; => results - latest: 4 prev: 3 oldest: 2
;; => nil
 
(/ 42 0)
;; => ArithmeticException Divide by zero  clojure.lang.Numbers.divide (Numbers.java:156)
(println "res" *1 "exception" *e)
;; => res nil exception #<ArithmeticException java.lang.ArithmeticException: Divide by zero>
;; => nil

Notice that clojure.repl defines in its namespace some very useful functions and macros such as find-docdocsourceaproposdir (prints a sorted list of public vars in a ns; ex.: (dir clojure.repl)), (root-cause throwable) – check out their docs at ClojureDocs/clojure.repl.

Developers! Quickly and easily gain access to the tools and information you need! Explore, test and combine our data quality APIs at Melissa Developer Portal – home to tools that save time and boost revenue. Our APIs verify, standardize, and correct the Big 4 + more – name, email, phone and global addresses – to ensure accurate delivery, prevent blacklisting and identify risks in real-time.

Topics:

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}