Sphereとともに

scalaとかplayframeworkとか。技術ブログにしたいなと。環境は Windows7x64, mac です。たまに声優さん情報が混ざります。最近ちょっとClojure触りました。

Clojure その14

Clojure その13 テキストファイル読み込み3 - Sphereとともに

にコメント頂きました(@kawasima 先生ありがとうございます)

詳しく見て行きましょう

単に中身を全部読み込むだけなら
(slurp "/xxxxxxx/hello/src/hello/core.clj")

行ごとに処理するなら、こうかな。

(with-open [rdr (clojure.java.io/reader "/xxxxxxx/hello/src/hello/core.clj")]
(let [lines (line-seq rdr)]
(doall
(map println lines))))

line-seqが遅延シーケンスなので、ファイルサイズがデカくても大丈夫です。

■ slurp とはなにか

ClojureDocs - clojure.core/slurp

これを使えればファイルを簡単に読めるわけですね

しかもなんと Webページも取得できるという優れもの

(ns hello.core)

(defn -main [] 
  (println (slurp "http://fscoward.hateblo.jp/")))

■ with-open

ClojureDocs - clojure.core/with-open

try-catch-finally を勝手にやってくれるやつかな

finally で close してくれる賢い奴

C# でいうと using でしょうか

■ doall

ClojureDocs - clojure.core/doall

英語難しい・・・

;; doall forces the seq to be realized

の一文から察するに、遅延シーケンスを強引に評価してやるぜって感じでしょうか