Sorry, somehow I got the wrong line pasted in there! Should be: user=> (defn is-day-of-week? [day-enum] (= (.get (Calendar/getInstance) Calendar/DAY_OF_WEEK) (day-enum weekdays)))
...but you probably figured that out. ;-) DD (2013/08/14 12:43), Daniel Meneses Báez wrote: > 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 <mailto: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> > > <mailto: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 <mailto: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 <mailto: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 <http://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 > <http://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> > >> <mailto: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> > >> <mailto: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 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%2bunsubscr...@googlegroups.com> > >> <mailto:clojure+unsubscr...@googlegroups.com > <mailto:clojure%2bunsubscr...@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> > > <mailto: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> > > <mailto:clojure%2bunsubscr...@googlegroups.com > <mailto:clojure%252bunsubscr...@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> > > <mailto:clojure%2bunsubscr...@googlegroups.com > <mailto:clojure%252bunsubscr...@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 > <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 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%2bunsubscr...@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 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.