#:g1: ClojureでL-99 (P2 最後2つのペアを返す)

Posted 2008-09-18 14:55:00 GMT

-(http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html)
今日もClojureでL-99。小さいコードをいじってると心が休まります(´▽`*)
Clojureでは、()とnilは別物で、()はempty?で検査できます。
また、(rest ())はエラーではなくて、nilが返ります。
ブール値は、trueとfalseなので、別にnilがある、ということなんですね。これはこれで便利かも。

;; P02 (*) Find the last but one box of a list.

(apply str (last-2 "こんにちは")) ;=> "ちは"

(defn last-2 [col] (loop [col col] (if (nil? (rrest col)) col (recur (rest col)))))

-CLや、Schemeと違うところ
(nil? ())
;=> false

(nil? nil) ;=> true

(rest ()) ;=> nil

comments powered by Disqus