Live data from Hacker News

Clojure from the ground-up: debugging

aphyr.com

1–10 of 22 posts

Re: Clojure from the ground-up: debugging

#2
Error messages and stack traces look pretty ugly.

In Common Lisp:

    CL-USER 51 > (bake (make-instance 'pie :flavor :blackberry) 375 10.25)

    Error: The value 3843.75 of #:|predicate1555| is not a predicate in CONDP.
      1 (continue) Supply a new value of #:|predicate1555|.
      2 (abort) Return to level 0.
      3 Return to top loop level 0.
A clear error message and a way to repair it.

A stack frame:

    Call to BAKE {offset 394}
      PIE               : #
      TEMP              : 375
      TIME              : 10.25
      DBG::|predicate|  : 3843.75
      DBG::|expression| : #
      DBG::G            : 3843.75

Re: Clojure from the ground-up: debugging

#4

I'm trying so hard to love Clojure, but I keep running into examples of code like this in the world: http://imgur.com/79FlpTL . I don't write dense Lisp code like that, but unfortunately a lot of other people do. And I spend far more time reading code than writing it.

If you don't mind, what document is that?

Re: Clojure from the ground-up: debugging

#5

I'm trying so hard to love Clojure, but I keep running into examples of code like this in the world: http://imgur.com/79FlpTL . I don't write dense Lisp code like that, but unfortunately a lot of other people do. And I spend far more time reading code than writing it.

If you don't mind, what document is that?

It's a page from the O'Reilly Clojure Programming book. I hate to point fingers at the authors, because it's generally a really great book. Just that some of the examples are rather dense, and I get the feeling that this is not at all unusual in the community.

Re: Clojure from the ground-up: debugging

#6

I'm trying so hard to love Clojure, but I keep running into examples of code like this in the world: http://imgur.com/79FlpTL . I don't write dense Lisp code like that, but unfortunately a lot of other people do. And I spend far more time reading code than writing it.

If you don't mind, what document is that?

It's from Clojure Programming by Chas Emerick, Brian Carper, Christophe Grand - http://shop.oreilly.com/product/0636920013754.do

Re: Clojure from the ground-up: debugging

#7

I'm trying so hard to love Clojure, but I keep running into examples of code like this in the world: http://imgur.com/79FlpTL . I don't write dense Lisp code like that, but unfortunately a lot of other people do. And I spend far more time reading code than writing it.

Well that code seems pretty readable to me and appears to preserve some interesting properties of the original paper as mentioned below the source :)

As far as spending more time reading Clojure than writing it I experience this myself - and I'm pretty sure this isn't a bad thing.

Re: Clojure from the ground-up: debugging

#8

I'm trying so hard to love Clojure, but I keep running into examples of code like this in the world: http://imgur.com/79FlpTL . I don't write dense Lisp code like that, but unfortunately a lot of other people do. And I spend far more time reading code than writing it.

Well that code seems pretty readable to me and appears to preserve some interesting properties of the original paper as mentioned below the source :) As far as spending more time reading Clojure than writing it I experience this myself - and I'm pretty sure this isn't a bad thing.

I meant that in general, we as programmers will spend more time reading (our, others') code than writing it. Nature of the business. Did not mean to imply this was a bad thing.

When I consider adopting a language, part of that consideration is how well I can read others' idiomatic code. It's so important for understanding libraries. I'm still just having a hard time with Clojure. I know it clicks for a lot of people though.

Re: Clojure from the ground-up: debugging

#9
Kyle's suggestions have a ton of value, but do note that debugging Clojure(Script) can also be a pedestrian activity if you so desire. All the usual mainstream bell/whistles IDE-based interactive debugging is available today in CursiveClojure - break on all exceptions, eval in frame, etc.

Also ClojureScript has had accurate source mapping in Safari, Chrome, Firefox, and Node.js for quite a long time now and recently moved to support targets like iOS. It's a huge time saver even for an experienced Clojure programmer :)

Re: Clojure from the ground-up: debugging

#10

I'm trying so hard to love Clojure, but I keep running into examples of code like this in the world: http://imgur.com/79FlpTL . I don't write dense Lisp code like that, but unfortunately a lot of other people do. And I spend far more time reading code than writing it.

Think of this code as taking a built-in data structure and repeatedly refining it by transforming it into a different data structure. With only a little more practice, you'll find reading (and writing!) code like this becomes second nature.

I find it much simpler to deal with this style than with the equivalent in other languages, which would scatter the details across a half-dozen files, a dozen classes, and two dozen methods.

Post reply on HN