Hi Rich, hi everybody,
I finally got around to trying an implementation of condp. I had to
write two other libs to do it the way I wanted. Here's the result:
(condp (instance? _ (* 99 99))
Number "it was a Number"
String "it was a String"
"it was something else")
=> "it was a Number"
(condp (instance? String _)
32 "32 was a String"
:foo ":foo was a String"
"hello" "hello was a String")
=> "hello was a String"
(econdp (instance? _ :foo)
Number "it was a Number"
String "it was a String")
=> java.lang.Exception: Nothing matched in econdp.
Note the underscores in the expressions. Those are "templates", in
clojure.contrib.template, which work a little like #(). They are
anonymous functions, but sub-expressions get evaluated when the
function is defined, not every time it is called. So, in the first
example, (* 99 99) only gets evaluated once.
Take a look at clojure.contrib.walk, clojure.contrib.template, and
clojure.contrib.condp (SVN rev. 304) for source & more comments. Hope
something here is useful, or at least interesting.
I'm going to use this to redefine "are" in clojure.contrib.test-is.
Later,
-Stuart Sierra
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---