Штука мощная.
Описал ими дерево значений - листья примитивного типа, вектора и записи:
data ValueTree :: * -> * where
VTPrim :: (Prim ty) -> ValueTree (Prim ty)
VTVec :: ValueTree a -> ValueTree [ValueTree a]
VTRec :: Map String RecordField -> ValueTree (Map String RecordField)
data RecordField = forall a . RecordField (ValueTree a)
(
Read more... )