Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

Clojure

Clojure (Java) はやはり速かったという話

Clojure (Java) はやはり速かったという話 あまりにも遅すぎなのでは?と思ったので調べたらやはり計測方法に問題があっ たみたい。 Java がこんなに遅いわけない。 遅かった原因 いつも通り nrepl 経由で適当に実行していたのが原因。 leiningen から nrepl…

Clojure が遅いという話

Clojure が遅いという話 遅いケースもあるという認識も持っておいてもらおう。 比較のために今回はPythonと比べてみる。 Clojure (dotimes [i 5] (time (reduce unchecked-add (map unchecked-add (range 1000000) (range 1000000))))) Python import timeit…

Leiningen と profile を使って設定ファイルを切り替える

Leiningen と profile を使って設定ファイルを切り替える Leiningen には profile を切り替える機能がある。 profile を切り替えることで本番用の設定と切り替えたりできるのだが、具体例が少ないように思えたので書いておく。 開発時に使える dev-resources…

protocolを使って既存の関数の振る舞いを変える

こんにちわ、高校生です。 今回はprotocolを使った話です。通常の場合 user=> (bit-and "生" "死") IllegalArgumentException bit operation not supported for: class java.lang.String clojure.lang.Numbers.bitOpsCast (Numbers.java:994) bit-andはNumbe…

Parsecを使ってjinja2風テンプレートをパースする。

http://github.com/mopemope/clarsec2を使って以前のjinja2風のテンプレを解析する。 まずはおおまかなブロックを検出するだけだけど。input <html> <body> {% foo %} {{ variable }} {% endfoo %} <div> {#_ Comment Comment #} </div> </body> </html> コード (use '[clarsec]) (use '[clarsec.m…

Parsecを使ってパースする

こんにちわ、高校生です。 にわかLisperです。みなさん、本当にClojure書いてますか? 正規表現とかしんどいし関数型言語ならParsec使えよ!という話があると思うので適当に書いてみました。まずはcsvですよね。 (use '[clarsec]) (def input "Year,Make,Mod…

jinja2風なテンプレートをパースする

こんにちは、高校生です。 Parserはいつも人の使ったり、ragel先輩に吐かせたり楽してたのですがシンプルなものなら書けるかなと思い書いてみました。 (import '(java.util.regex Pattern)) (require '[clojure.string :as string]) (def sp-chars #"([\\\\*…

継続的にタスクを実行するleiningen plugin

こんにちわ、高校生です。 leiningenも2.0-previewが出てきていろいろ機能強化されてきていますね。 ただleiningen 2.0ではinteractiveタスクがなくなっています。 ビルド毎にleiningenを起動をするのもだるいなあと思い、プロジェクト内のファイル変更を監…