Hi Alex,

2010/1/13 ataggart <alex.tagg...@gmail.com>:
> You mean dropping it from the level-specific macros such as error and
> fatal?  I'm inclined to disagree; being able to access the exception
> instance itself is a Good Thing.

Yes. You are quite right; preserving the exception is more important.

If I understand correctly, the latest version is used as follows:
(log/spy foo)
(log/error "OMG!!" exception)
(log/debugp exception "OMG!! foo:" foo)
(log/debugp "OMG!! foo:" foo "should be impossible")
(log/debugf "OMG!! foo: %d should be impossible" foo)
(log/debugp "Something expected resulted in" foo)

I'm worried that log and logp having opposite overloading it will trip
users up. But I don't see a good alternative, and it might not be a
valid concern, just an initial reaction.

Writing the calls out like this made me realize that many use cases
for debugp are similar to spy and would be much more informative if
using spy. But perhaps spy has some limitations in that it takes a
single expression, which is very good when you want to leave the
expression in place (+ x (spy y)). It might be convenient to have
automatic spy-like expansion in a println-like format:
(when (> 10 (+ x y))
  (log/spyp "Oh dear," (+ x y) "should never happen." x y)
  (dosomethingaboutit))
;logs "Oh dear, (+ x y) => 5 should never happen. x => 3 y => 2"
;should spyp return a value though? maybe the name is badly chosen.

And/or it might be nice to have some sort of (log/assertp pred expr
print-expr) form.
(log/assertp (partial < 10) (+ x y)) "Oh dear" x y)
;logs "(+ x y) => 5 Oh dear x => 3 y => 2"
;throws via (assert ...)   java.lang.AssertionError: Assert failed:
((partial < 10) (+ x y)) (NO_SOURCE_FILE:0)

Would these be welcome additions, or polluting an already full namespace?


> I'm also including the optimization I mentioned earlier regarding
> skipping the instance? check for the common case where a string
> literal proves there's no throwable param.

Neat trick!



Regards,
Tim.
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to