ppTermF' pp lcls p (Let dl u) =
    ppLet <$> traverse (ppLocalDef pp lcls lcls') dl
          <*> pp lcls' PrecNone u
  where ppLet dl' u' =
          ppParens (p > PrecNone) $
            text "let" <+> lbrace <+> align (vcat dl') <$$>
            indent 4 rbrace <$$>
            text " in" <+> u'
        nms = concatMap localVarNames dl
        lcls' = foldl' consBinding lcls nms
ppTermF' pp lcls p (Let dl u) =
    ppLet <$> traverse (ppLocalDef pp lcls lcls') dl
          <*> pp lcls' PrecNone u
  where ppLet dl' u' =
          ppParens (p > PrecNone) $
            text "let" <+> lbrace <+> align (vcat dl') <$$>
            indent 4 rbrace <$$>
            text " in" <+> u'
        nms = concatMap localVarNames dl
        lcls' = foldl' consBinding lcls nms
ppTermF' pp lcls p (Let dl u) =
    ppLet <$> traverse (ppLocalDef pp lcls lcls') dl
          <*> pp lcls' PrecNone u
  where ppLet dl' u' =
          ppParens (p > PrecNone) $
            text "let" <+> lbrace <+> align (vcat dl') <$$>
            indent 4 rbrace <$$>
            text " in" <+> u'
        nms = concatMap localVarNames dl
        lcls' = foldl' consBinding lcls nms