Mimochode, jak se v Haskell řeší mutable stav? Je zde například key-value úložiště?
Mutable stav se typicky řeší přes nějaký State monad, abys nepotřeboval mutable stav. Takže pak máš třeba "HashTable" (spíš HashMap), která je sice immutable, ale když ji potřebuješ měnit, tak prostě poběžíš v state/stateT a pak můžeš psát třeba:
flip runStateT mempty $ do
at "key" .= 10
over (ix "key") (+ 1)
over (ix "does-not-exist") (+ 20)
newvalue <- use (at "key")
whenJustM (use (at "key")) print
Ad key-value úložiště - jestli myslíš diskové, tak acid-state, ale moje osobní zkušenost je, že je lepší použít persistent nad PostgreSQL. Jinak pro haskell existují knihovny pro hodně věcí jako Redis apod.
Jinak docela hezký je třeba
vault, který má jako klíč "typ".