In the post they say they didn’t do this bc they’d just be trading long strings for deeply nested objects.
data Screen = Screen {
previous :: Maybe Screen,
...
}
is inferior to what they eventually had, data ScreenHistory = ScreenHistory {
previous10 :: [Screen],
current :: Screen
}
-- Screen itself is nonrecursive
But I do think that storing JSON as a string was a weird antipattern in the first case, smacking of a premature optimization.