Hi

I'm new to Clojure so thought that I would work through some basic
examples and decided upon 99 problems (http://aperiodic.net/phil/scala/
s-99/). So far I have got as far as #11 and have become a bit confused
as to why my initial solution does not work.

My test for this problem is

(deftest encodemodified-should-return-list-with-counts-when-more-than-
one
   (is (= '((3,"a"),"b",(2,"c"),"a") (encodemodified ["a" "a" "a" "b"
"c" "c"
"a"]))))

My initial solution was the following

(defn pack
[col]
   (partition-by identity
col))

(defn encodemodified
[col]
   (map #(if (== (count %) 1) % (list (count %) (first
%)))
      (pack col)))

This failed giving me the following result and unexpected actual

FAIL in (encodemodified-should-return-list-with-counts-when-more-than-
one) (core.clj:47)
expected: (= (quote ((3 "a") "b" (2 "c") "a")) (encodemodified ["a"
"a" "a" "b" "c" "c" "a"]))
  actual: (not (= ((3 "a") "b" (2 "c") "a") ((3 "a") ("b") (2 "c")
("a"))))

If I change the second % in  line 2 of the function to (first %), then
the test passes i.e.

(defn encodemodified
[col]
   (map #(if (== (count %) 1) (first %) (list (count %) (first
%)))
      (pack col)))

Could somebody explain to me why my failing function does not work and
returns the unexpected actual above. I expect I missing something
fairly basic.

Many thanks.

-- 
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

Reply via email to