ppRecordF :: Applicative f => (t -> f Doc) -> Map String t -> f Doc
ppRecordF pp m = braces . semiTermList <$> traverse ppFld (Map.toList m)
  where ppFld (fld,v) = eqCat (text fld) <$> pp v
        eqCat x y = group $ nest 2 (x <+> equals <<$>> y)
ppRecordF :: Applicative f => (t -> f Doc) -> Map String t -> f Doc
ppRecordF pp m = braces . semiTermList <$> traverse ppFld (Map.toList m)
  where ppFld (fld,v) = eqCat (text fld) <$> pp v
        eqCat x y = group $ nest 2 (x <+> equals <<$>> y)
ppRecordF pp m = braces . semiTermList <$> traverse ppFld (Map.toList m)
  where ppFld (fld,v) = eqCat (text fld) <$> pp v
        eqCat x y = group $ nest 2 (x <+> equals <<$>> y)