m... the function you wrote only returns true on saturdays

but I get the point!

thanks for your answer


On Wed, Aug 14, 2013 at 12:14 PM, Dave Della Costa <ddellaco...@gmail.com>wrote:

> I know you said clj-time solved this for you, but here's another way to
> handle it which avoids using a macro (using a map of keywords to
> java.util.Calendar weekday enums for convenience and to be more
> Clojure-esque, but it isn't necessary):
>
> user=> (def weekdays {:mon Calendar/MONDAY :tues Calendar/TUESDAY :wed
> Calendar/WEDNESDAY :thurs Calendar/THURSDAY :fri Calendar/FRIDAY :sat
> Calendar/SATURDAY :sun Calendar/SUNDAY})
> #'user/weekdays
> user=> (defn is-day-of-week? [day-enum] (= Calendar/DAY_OF_WEEK
> (day-enum weekdays)))
> #'user/is-day-of-week?
> user=> (is-day-of-week? :sat)
> false
> user=> (is-day-of-week? :wed)
> true
> user=>
>
> You don't need to use all the Java interop syntax you're using, you can
> refer to and compare these static fields directly.  In the end these are
> simply Integer comparisons.
>
> DD
>
> (2013/08/14 11:45), Daniel Meneses Báez wrote:
> > I don't know if you have a differente approach, but as a defn it doesn't
> > work
> >
> > user> (import '[java.util Calendar])
> > java.util.Calendar
> > user> (defn is [s instant]
> >         (= (.get instant Calendar/DAY_OF_WEEK)
> >            (. Calendar s)))
> > CompilerException java.lang.NoSuchFieldException: s,
> > compiling:(NO_SOURCE_PATH:3:12)
> >
> > user> (defmacro is [s instant]
> >         `(= (.get ~instant Calendar/DAY_OF_WEEK)
> >            (. Calendar ~s)))
> > #'user/is
> > user> (is WEDNESDAY (Calendar/getInstance))
> > true
> >
> > I think that when you declare this as a function it will it attempt to
> > validate that Calendar has an 's' member, at this point that is an
> > error, on the other hand when the macro gets replaced the generated form
> > is valid.
> >
> > just for the fun of it, I got this working:
> >
> > user> (defmacro is [s]
> >         `#(= (.get % Calendar/DAY_OF_WEEK)
> >            (. Calendar ~s)))
> > #'user/is
> > user> ((is WEDNESDAY) (Calendar/getInstance))
> > true
> >
> > now I can write what I had in mind
> >
> > user> (def is-friday (is FRIDAY))
> > #'user/is-friday
> > user> (is-friday (Calendar/getInstance))
> > false
> > user> (def is-wednesday (is WEDNESDAY))
> > #'user/is-wednesday
> > user> (is-wednesday (Calendar/getInstance))
> > true
> >
> > cool xD
> >
> >
> >
> > On Wed, Aug 14, 2013 at 11:33 AM, Jim - FooBar(); <jimpil1...@gmail.com
> > <mailto:jimpil1...@gmail.com>> wrote:
> >
> >     why on earth is this a macro and not a regular fn?
> >
> >
> >     Jim
> >
> >     On 14/08/13 16:19, Daniel Meneses wrote:
> >>     Hi!
> >>
> >>     Thanks for your answer Sean I got it solved using clj-time
> >>
> >>     Also I found the problem with my macro attempt
> >>
> >>     user> (defmacro is
> >>             [s instant]
> >>             `(= (.get ~instant Calendar/DAY_OF_WEEK)
> >>                 (. Calendar ~s)))
> >>     #'current-day.core/is
> >>     user> (is FRIDAY (Calendar/getInstance))
> >>     false
> >>     user> (is WEDNESDAY (Calendar/getInstance))
> >>     true
> >>
> >>     I was quoting the symbol !!
> >>
> >>     On Tuesday, August 13, 2013 8:21:39 PM UTC-4, Sean Corfield wrote:
> >>
> >>         Perhaps clj-time might help you?
> >>
> >>         https://github.com/clj-time/__clj-time
> >>         <https://github.com/clj-time/clj-time>
> >>
> >>         (ns time.core
> >>           (:require [clj-time.core :as time]
> >>                     [clj-time.local :as local]
> >>                     [clj-time.predicates :as p]))
> >>
> >>         (p/monday? (time/now)) ;; false
> >>         (p/tuesday? (time/now)) ;; false
> >>         (p/wednesday? (time/now)) ;; true (for me in California since
> >>         (time/now) is UTC)
> >>
> >>         (p/monday? (local/local-now)) ;; false
> >>         (p/tuesday? (local/local-now)) ;; true (for me)
> >>         (p/wednesday? (local/local-now)) ;; false (not yet in
> California)
> >>
> >>         Sean
> >>
> >>         On Tue, Aug 13, 2013 at 3:14 PM, Daniel Meneses Báez
> >>         <dap...@gmail.com> wrote:
> >>         > Hi :)
> >>         >
> >>         > I really want to know if there is a way to do this:
> >>         >
> >>         > (ns ...
> >>         >    (:import [java.util Calendar]))
> >>         >
> >>         > (defsomething ;; if it is possible using a macro I'm ok with
> >>         that
> >>         >    calendar-member
> >>         >    [member]
> >>         >     (symbol (str "Calendar/" member)))
> >>         >
> >>         > what I want to know if an instance of Calendar "isMonday",
> >>         "isFriday"
> >>         > "isSunday" etc...
> >>         >
> >>         > so I was thinking to write something like
> >>         >
> >>         > (defn- isss [day instant]
> >>         >     (= (.get instant Calendar/DATE) (calendar-member day)))
> >>         >
> >>         > and then use it like (def is-friday (partial isss 'FRIDAY)) ;;
> >>         >
> >>         > am I being to crazy?
> >>         >
> >>         > btw I'm really loving the language.
> >>         >
> >>         >
> >>         >
> >>         > --
> >>         > Daniel Meneses Báez
> >>         >
> >>         > --
> >>         > --
> >>         > You received this message because you are subscribed to the
> >>         Google
> >>         > Groups "Clojure" group.
> >>         > To post to this group, send email to clo...@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+u...@__googlegroups.com
> >>         > For more options, visit this group at
> >>         > http://groups.google.com/__group/clojure?hl=en
> >>         <http://groups.google.com/group/clojure?hl=en>
> >>         > ---
> >>         > You received this message because you are subscribed to the
> >>         Google Groups
> >>         > "Clojure" group.
> >>         > To unsubscribe from this group and stop receiving emails
> >>         from it, send an
> >>         > email to clojure+u...@__googlegroups.com.
> >>         > For more options, visit
> >>         https://groups.google.com/__groups/opt_out
> >>         <https://groups.google.com/groups/opt_out>.
> >>         >
> >>         >
> >>
> >>
> >>
> >>         --
> >>         Sean A Corfield -- (904) 302-SEAN
> >>         An Architect's View -- http://corfield.org/
> >>         World Singles, LLC. -- http://worldsingles.com/
> >>
> >>         "Perfection is the enemy of the good."
> >>         -- Gustave Flaubert, French realist novelist (1821-1880)
> >>
> >>     --
> >>     --
> >>     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
> >>     <mailto: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
> >>     <mailto: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 unsubscribe from this group and stop receiving emails from it,
> >>     send an email to clojure+unsubscr...@googlegroups.com
> >>     <mailto:clojure+unsubscr...@googlegroups.com>.
> >>     For more options, visit https://groups.google.com/groups/opt_out.
> >>
> >>
> >
> >     --
> >     --
> >     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
> >     <mailto: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
> >     <mailto:clojure%2bunsubscr...@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 a topic in
> >     the Google Groups "Clojure" group.
> >     To unsubscribe from this topic, visit
> >     https://groups.google.com/d/topic/clojure/yXRXJCdsOrM/unsubscribe.
> >     To unsubscribe from this group and all its topics, send an email to
> >     clojure+unsubscr...@googlegroups.com
> >     <mailto:clojure%2bunsubscr...@googlegroups.com>.
> >     For more options, visit https://groups.google.com/groups/opt_out.
> >
> >
> >
> >
> > --
> > Daniel Meneses Báez
> >
> > --
> > --
> > 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 unsubscribe from this group and stop receiving emails from it, send
> > an email to clojure+unsubscr...@googlegroups.com.
> > For more options, visit https://groups.google.com/groups/opt_out.
>
> --
> --
> 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 a topic in the
> Google Groups "Clojure" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/clojure/yXRXJCdsOrM/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>


-- 
Daniel Meneses Báez

-- 
-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to