#:g1: ClojureでL-99 (P05 コレクションの逆転)

Posted 2008-09-21 12:35:00 GMT

-(http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html)
ドキュメントを付けてみました。他にユーザコメントとテストが付けられるようです。

;; P05 (*) Reverse a list.
(defn 
  #^{:doc "P05 (*) Reverse a list."}
  rev [coll]
  (let [str? (string? coll)]
    (loop [coll coll, acc []]
      (if (empty? coll)
        (if str?
          (apply str acc)
          acc)
        (recur (rest coll) (cons (first coll) acc))))))

(rev "foooo") ;=> "oooof" (rev '[f o o o]) ;=> (o o o f)


comments powered by Disqus