Clojure
Clojure (Java) はやはり速かったという話 あまりにも遅すぎなのでは?と思ったので調べたらやはり計測方法に問題があっ たみたい。 Java がこんなに遅いわけない。 遅かった原因 いつも通り nrepl 経由で適当に実行していたのが原因。 leiningen から nrepl…
Clojure が遅いという話 遅いケースもあるという認識も持っておいてもらおう。 比較のために今回はPythonと比べてみる。 Clojure (dotimes [i 5] (time (reduce unchecked-add (map unchecked-add (range 1000000) (range 1000000))))) Python import timeit…
Leiningen と profile を使って設定ファイルを切り替える Leiningen には profile を切り替える機能がある。 profile を切り替えることで本番用の設定と切り替えたりできるのだが、具体例が少ないように思えたので書いておく。 開発時に使える dev-resources…
こんにちわ、高校生です。 今回はprotocolを使った話です。通常の場合 user=> (bit-and "生" "死") IllegalArgumentException bit operation not supported for: class java.lang.String clojure.lang.Numbers.bitOpsCast (Numbers.java:994) bit-andはNumbe…
http://github.com/mopemope/clarsec2を使って以前のjinja2風のテンプレを解析する。 まずはおおまかなブロックを検出するだけだけど。input <html> <body> {% foo %} {{ variable }} {% endfoo %} <div> {#_ Comment Comment #} </div> </body> </html> コード (use '[clarsec]) (use '[clarsec.m…
こんにちわ、高校生です。 にわかLisperです。みなさん、本当にClojure書いてますか? 正規表現とかしんどいし関数型言語ならParsec使えよ!という話があると思うので適当に書いてみました。まずはcsvですよね。 (use '[clarsec]) (def input "Year,Make,Mod…
こんにちは、高校生です。 Parserはいつも人の使ったり、ragel先輩に吐かせたり楽してたのですがシンプルなものなら書けるかなと思い書いてみました。 (import '(java.util.regex Pattern)) (require '[clojure.string :as string]) (def sp-chars #"([\\\\*…
こんにちわ、高校生です。 leiningenも2.0-previewが出てきていろいろ機能強化されてきていますね。 ただleiningen 2.0ではinteractiveタスクがなくなっています。 ビルド毎にleiningenを起動をするのもだるいなあと思い、プロジェクト内のファイル変更を監…