Or this:

(def number-text? #"^\d$")

Which is a savings :)

On Aug 27, 5:21 pm, eyeris <drewpvo...@gmail.com> wrote:
> I named is-number-regex poorly. I meant it to be a function that calls
> re-matches. Here's a more complete snippet, with better names:
>
> ; bad code
> (filter #"^\d+$" maybe-numbers)
>
> ; good code
> (defn re-match? [re s] (not (nil? (re-matches re s))))
> (defn number-text? [s] (re-match? #"^\d+$" s))
> (filter number-text? maybe-numbers)
>
> My point is that, since magic numbers are bad, you should be giving
> the regex a meaningful name, so implementing IFn for regexps isn't a
> big savings because it pretty much just transforms:
>
> (defn number-text? [s] (re-match? #"^\d+$" s))
>
> into this:
>
> (defn number-text? [s] (#"^\d+$" s))
>
> On Aug 27, 12:50 pm, Sean Devlin <francoisdev...@gmail.com> wrote:
>
>
>
> > Hmmm...  I think you're confusing the issue.  Your compliant seems to
> > be more directed at "magic numbers" than regexes.  If I understand
> > your argument (which I agree with):
>
> > ;bad code
> > (filter #"\d+" maybe-numbers)
>
> > ;good code
> > (let [is-number-regex #"\d+"]
> >   (filter is-number-regex maybe-numbers))
>
> > Granted, some understanding of regexes is required.  However, if
> > you're hacking Lisp, I think you've moved beyond beginner status, and
> > expecting a basic familiarity of a regex is fair.
>
> > My $.02
>
> > Sean
>
> > On Aug 27, 1:37 pm, eyeris <drewpvo...@gmail.com> wrote:
>
> > > I have the same urge, to want to use regexps as predicates. However I
> > > definitely would not like to read such code. I can only imagine having
> > > to try to read such code if I didn't understand regexps. E.g. (filter
> > > #"\d+" maybe-numbers) is clear enough to someone who understands
> > > regexps. However (filter is-number-regex maybe-numbers) is clear to
> > > even programmers that don't understand regexps.
>
> > > On Aug 27, 10:41 am, Sean Devlin <francoisdev...@gmail.com> wrote:
>
> > > > On Aug 27, 1:06 am, Timothy Pratley <timothyprat...@gmail.com> wrote:
>
> > > > > > Granted, this wouldn't work for anything that gets passed to Java, 
> > > > > > but
> > > > > > the following gist would be a start.
> > > > > >http://gist.github.com/176032
>
> > > > > You already have a getPattern method for those cases. Which suggests
> > > > > another solution:
>
> > > > > (defn re-fn
> > > > >   "Uses ss to construct a java.util.Pattern.
> > > > >   Returns a function which returns the Pattern if called with no
> > > > > arguments,
> > > > >   and calls re-seq if called with a string argument."
> > > > >   [ss]
> > > > >   (let [pp (re-pattern ss)]
> > > > >     (fn re
> > > > >       ([] pp)
> > > > >       ([s] (re-seq pp s)))))
>
> > > > > user=> ((re-fn "2.") "12324251")
> > > > > ("23" "24" "25")
> > > > > user=> ((re-fn "2."))
> > > > > #"2."
>
> > > > >  If #"X" created a (re-fn "X") then all the re functions could accept
> > > > > a function and call it in order to avoid having to do (re-find (pp)
> > > > > s). The previous signature could be retained so that they would work
> > > > > with either type of arguments if that were desirable. The downside is
> > > > > trying to explain that in the docs might be confusing - so a wrapper
> > > > > seems more obvious for that.
>
> > > > > Oh - it seems like re-seq does the most work so perhaps that is the
> > > > > best candidate?
>
> > > > The only feature I want is the ability to use a regex as a predicate.
> > > > So, I'd prefer something like re-matches.  Maybe this isn't the
> > > > biggest use case, though.
>
> > > > Sean
>
> > > > > 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