Wed Feb 15 00:37 UTC; omar
==========================
I am frustrated. See if you can spot the problem with this:
,----
| (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))
`----
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.