Clojure演習 ライブラリ書いてみた-2

memoize

前回こんなコードを書いていた。

(defn get-content [c sm]
  (let [rdr ((memoize get-data) sm)]
    (assoc {} c (first (:content (first (html/select (html/html-resource rdr) [c])))))
    ))

これでキャッシュされると思っていたらしい。アホか。

(def get-data-cache (memoize get-data))

とでもしてからget-data-cacheを呼ぶべきらしい。指摘に感謝。

単純化

前回色々書きすぎていたように思えたので書きなおした。

(ns nicod-clj.core
  (:gen-class)
  (:require [pl.danieljanus.tagsoup :as tagsoup])
  (:import java.io.ByteArrayInputStream)
  )

(defn get-thumbinfo-data [sm]
   (tagsoup/parse (apply str "http://ext.nicovideo.jp/api/getthumbinfo/" sm)))

(def get-thumbinfo-data-cache (memoize get-thumbinfo-data))

(defn getthumbinfo [sm]
  (get-thumbinfo-data-cache sm)
)

これだけで良いんじゃないだろうか。
ちゃんと何か書いたって気がしないけれども。