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.

Reply via email to