For a "do it with (map)" mindset, think in terms of list processing or a conveyer belt, where a series of pure functions transforms a value in a small but significant way.
1. Imho, the clojure-way is to apply the set of principles outlined by Rich and FP using the idioms established by the community. 2. https://gist.github.com/alexpw/e72c998b0d0be0daaaf2 On Monday, September 22, 2014 1:45:23 PM UTC-5, J David Eisenberg wrote: > > As part of a larger program, I'm testing a function that will turn a > string of days on which a class occurs (such as "MWF") into a list of seven > numbers: (1 0 1 0 1 0 0). > I first translate"TH" (Thursday) to "R" and "SU" (Sunday) to "N" to make > things a bit easier. > > I came up with the following code: > > (defn days-number-maker > "Recursively compare first item in days of week with > first item in string of days. If matching, add a 1, > else add a zero to the result" > [all-days day-string result] > (if (empty? all-days) (reverse result) > (if (= (first all-days) (first day-string)) > (recur (rest all-days)(rest day-string) (conj result 1)) > (recur (rest all-days) day-string (conj result 0))))) > > (defn days-to-numbers > "Change string like MTTH to (1 1 0 1 0 0 0)" > [day-string] > (let [days (clojure.string/replace > (clojure.string/replace day-string #"TH" "R") #"SU" "N")] > (days-number-maker "MTWRFSN" days (list)))) > > The good news: the code works. The bad news: I'm convinced I'm doing it > wrong, in the moral purity sense of the word. Something inside of me says, > "You could have just used (map...) to do this the *right* way," but I can't > see how to do it with (map). So, my two questions are: > > 1) Is there such a thing as "the Clojure way," and if so, > 2) How can I rewrite the code to be more Clojure-ish? > > -- This email communication (including any attachments) contains information from Answers Corporation or its affiliates that is confidential and may be privileged. The information contained herein is intended only for the use of the addressee(s) named above. If you are not the intended recipient (or the agent responsible to deliver it to the intended recipient), you are hereby notified that any dissemination, distribution, use, or copying of this communication is strictly prohibited. If you have received this email in error, please immediately reply to sender, delete the message and destroy all copies of it. If you have questions, please email le...@answers.com. If you wish to unsubscribe to commercial emails from Answers and its affiliates, please go to the Answers Subscription Center http://campaigns.answers.com <http://campaigns.answers.com/jphtest> to opt out. Thank you. -- 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/d/optout.