** Wed Feb 15 00:37 UTC; omar
I am frustrated. See if you can spot the problem with this:
#+begin_src clojure
(defn reload-lat!
"Refreshes the lat from disk, returning the updated lat."
^Lat [{:keys [cached-lat] :as this}]
(swap! cached-lat reload-lat this))
(defn disk-interface
"Creates a stateless interface for loading a line from disk.
Automatically triggers an asynchronous reload when instantiated."
[index-file-path
inventory]
(let [this {:index-file-path index-file-path
:cached-lat (atom nil)
:inventory inventory}]
(future (reload-lat! this))
this))
#+end_src
This codebase has statefulness all over it, every other
function has a bang at the end. There's a MutableStore
implementation which has the docstring "A stateful wrapper
around an ImmutableStore". Its only method is ~put~ ffs.
I think there's a fundamental misunderstanding of words in
play.
Also, this is a disk based storage model. I think that's a
terrible idea for software which needs to serve multiple
requests possibly concurrently.
Anyway, I'm done for now. I need to stop thinking about this.