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.