> > The only feature I want is the ability to use a regex as a predicate.
> Would automatically forcing the first step to get a nice 'nil' be 
>unacceptable?

Sounds good to me!
This can be quite easily accommodated:

(defn re-fn
  "Construct a regular expression from string.
  Calling a regular expression with no arguments returns a Pattern.
  Calling a regular expression with a string argument
  returns nil if no matches, otherwise the equivalent of (re-seq re
string)."
  [string]
  (let [pp (re-pattern string)]
    (fn re
      ([] pp)
      ([s] (let [groups (re-seq pp s)]
             (if (first groups)
               groups
               nil))))))


user=> ((re-fn "7.") "12324251")
nil
user=> ((re-fn "2.") "12324251")
("23" "24" "25")
user=> (if ((re-fn "1") "12") :great :bad)
:great

(And of course a wrapper implementation version could do something
similar).


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