書いた。これこそ無くてもいいけどあるとちょっとだけ楽よね?良かったら使って!
2010/05/07
2010/01/24
プログラミング Clojure って本が出る
ねーさっぱりですよ。反省。来月からもうちょっと頑張る。
いよいよ Clojure の本出ますね!Web でいろいろ見ながら勉強したり(ちょっとだけ、ね)してるんだけど、やっぱり僕は本を見ながら写経しないと駄目みたいなので嬉しい。給料出たらすぐ買う予定。
オーム社
売り上げランキング: 1596
2009/11/21
Clojure de Fibonacci number
なんとなく試してみた。
~/workspace/sketch % time ./clojure.clj 3524578 ./clojure.clj 2.44s user 0.11s system 98% cpu 2.588 total ~/workspace/sketch % time ./python.py 3524578 ./python.py 2.97s user 0.02s system 98% cpu 3.025 total
へー。 それだけなんだけど。
#!/usr/bin/env clj
(defn fib [n]
(if (<= n 2)
1
(+ (fib (- n 1)) (fib (- n 2)))))
(println (fib 33))
#!/usr/bin/env python
# encoding: utf-8
from __future__ import print_function
def fib(n):
if n <= 2:
return 1
return fib(n - 1) + fib(n - 2)
print(fib(33))
追記
(def fibs (lazy-cat [0 1] (map + fibs (rest fibs)))) (println (take 33 fibs))clojureでフィボナッチ
ほへー。よくわかりませんが早い…。
% time ./clojure.clj (0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121 393 196418 317811 514229 832040 1346269 2178309) ./clojure.clj 1.02s user 0.11s system 94% cpu 1.200 total
2009/11/14
Clojure de FizzBuzz
ちょっとだけお勉強。覚えること多いし、それ以上に考え方変えてかなきゃいけないから大変だなぁ。
#!/usr/bin/env clj
; FizzBuzz
(println (map (fn [x]
(cond
(= (rem x 15) 0) 'FizzBuzz
(= (rem x 5) 0) 'Buzz
(= (rem x 3) 0) 'Fizz
:else x))
(range 1 101)))
Lisp のインデントわからない…フォーマッタあるよね多分。
完全に手続き脳だからいちいち (println x) したくなるけど、そんなの後でやればいい、と。
2009/11/11
Clojure: first step
なんにでも飛びつく悪い癖なんだけれど、いまだに Lisp が腑に落ちないというか理解できてないってのもあってとりあえず処理系だけはインストールしてたんだよね。 Mac なら MacPorts がやっぱり楽。
% sudo port -v install clojure +rlwrap
+readline のオプションもあったけど +rlwrap でインストールした。たまたま検索して開いたページではこっちの方がおすすめって書かれてたしこれでよかった。
で、起動するのに簡単なシェルスクリプト書いた方がいいよっていうから、それに倣って ~/bin/clj を作ったのね。内容は以下の通り。
#!/usr/bin/env bash
java -cp clojure/clojure.jar clojure.lang.Repl
インストール直後はこれで問題なく動いてたんだけど、久々に起動しようとしたらエラー出て、なんでかなーって調べたら /opt/local/bin/clj にすでにちゃんとしたスクリプトがインストールされてて、自分の書いたやつが classpath の関係でダメになってたってだけだった。
そんな訳で、MacPorts でインストールしたらすぐそのまま Clojure で遊んでればよろしい、ということがわかりました!
