Hi,

Jeff correct me if I'm wrong but I think you are after something along the 
following lines.
Instead:
(defn f [x] {:pre [(some-fancy-validation x)]} ..)

To have something like this:
(defn f [x] {:pre [^{:msg "here goes description of what has not been valid"} 
(some-fancy-validation x)]} ..)

It could turn precondition to a bit more user-friendly construct.

I would also like to have assert-args public.

Cheers,
Hubert.
On Feb 10, 2011, at 8:10 PM, Daniel Werner wrote:

> On 10 February 2011 17:05, Jeff Rose <ros...@gmail.com> wrote:
>> Sorry for the reply spam, but I've just remembered another error
>> reporting issue: pre and post conditions.  They are a great feature
>> and I'd like to use them more often, but the error messages they
>> produce are virtually useless in comparison to just writing your own
>> check with a custom exception.  How about having optional error
>> messages for the conditions?
> 
> You can make your pre/post condition AssertionErrors more
> human-readable by factoring out their logic into helper functions:
> 
> (defn valid-article-id? [art-id]
>  (or (and (> (mod x 42) 3) (frobz x)) (qux x)))
> 
> (defn buy-article [art-id]
>  {:pre [(valid-article-id? art-id)]}
>  ...)
> 
> Thus, the AssertionError message will complain about
> "valid-article-id?" failing instead of the rather cryptic "or and
> mod". If you need even more flexibility, it is also possible to throw
> an exception from the helper function. Not pretty, though.
> 
> That said, I'd really wish for the private clojure.core/assert-args
> macro to be made public. It's very comfortable to work with and
> provides for semi-standardized error messages (offending argument name
> always in front).
> 
> -- 
> 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

-- 
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