タグ

ブックマーク / kazuhira-r.hatenablog.com (2)

  • Clojureの並列処理関連の関数 - CLOVER🍀

    Clojureで並列・並行処理といえばSTMやエージェントが有名だと思いますが、お手軽な関数も用意されているみたいなので、調べてみました。 pmap map関数の並列版です。与えたシーケンスに対して、関数を並列に適用してくれます。 (time (println (let [sleep-and-double (fn [v] (Thread/sleep 3000) (* 2 v))] (pmap sleep-and-double (range 1 6))))) ;; => (2 4 6 8 10) "Elapsed time: 3058.024539 msecs" (shutdown-agents) 少し前にこの関数を使ったエントリを書きましたが、どうもシーケンスの数だけスレッドが起動するっぽいので、その点は注意が必要そうです。 あと、裏でエージェントを使っているようなので、shutdown-

    Clojureの並列処理関連の関数 - CLOVER🍀
  • Clojureの忘れっぽいrequire、use、import - CLOVER🍀

    Clojureでプログラムを書くと、当然のように使うrequire、use、importの各関数/マクロですが、なんかよく忘れるのでメモっておこうかと。 require関数 Clojureのライブラリをロードするための関数。こういう感じで使います。 (require 'clojure.string) 単独のライブラリをロードする場合は、先頭に「'」が付くと…。 複数ロードする場合は、純粋に繋げばOK。 (require 'clojure.string 'clojure.data) まあ、requireを複数行ってもいいですけど。 requireすると、こんな感じでライブラリの呼び出しが可能に。 (clojure.string/join \, ["Hello" "World"]) 長いよ!っていう場合は、「:as」キーワードを付与することで別名を付けることができます。 (require '[

    Clojureの忘れっぽいrequire、use、import - CLOVER🍀
  • 1