TODO ==== A non-exhaustive list of things TO DO for Extrapolate. * improve performance by improving performance of Speculate * `deriveGeneralizableFromTo`: derive a generalizable value using a bijection passed as parameter so that a data invariant is not broken. Example: deriveGeneralizable ''Map fromList toList. * `add-th-eg`: add the parser example from the Feat paper; * `improve-record-printing`: Improve the record printing by explictly printing records and _not_ showing variables. For example, when testing `prop_delete`, currently we get: StackSet (Screen (Workspace x y (Just s)) z x’) ss ws crs but we could get the following instead (with indent): > check prop_delete StackSet { current = Screen { workspace = Workspace { tag = x , layout = y , stack = Just s } , screen = z , screenDetail = x' } , visible = ss , hidden = ws , floating = crs } which could be further summarized to: stackset {current = scr {workspace = ws {stack = Just s}}}