From e83b4c94db78da310e71bc9c82188067567bf033 Mon Sep 17 00:00:00 2001 From: Lennart Spitzner Date: Sun, 4 Sep 2016 22:20:49 +0200 Subject: [PATCH] Showcase.md: Update to hindent-5.2.1 results; Add haskell-formatter output --- Showcase.md | 334 +++++++++++++++++++--------------------------------- 1 file changed, 123 insertions(+), 211 deletions(-) diff --git a/Showcase.md b/Showcase.md index a2dc443..05e3fd8 100644 --- a/Showcase.md +++ b/Showcase.md @@ -140,215 +140,60 @@ layoutBriDoc ast briDoc = do return $ () ~~~~ -In contrast, let us look at Chris Done's `hindent` (version `4.6.4`) re-formatting results for the same input, with three different styles: +In contrast, let us look at Chris Done's `hindent` (version `5.2.1`) re-formatting results for the same input: -## `hindent --style johan-tibell` output +## `hindent` output ~~~~ .hs -- 10 20 30 40 50 60 70 80 module Language.Haskell.Brittany.BriLayouter - (layoutBriDoc) - where + ( layoutBriDoc + ) where layoutBriDoc - :: Data.Data.Data ast - => ast -> BriDocNumbered -> PPM () -layoutBriDoc ast briDoc = do - -- first step: transform the briDoc. - briDoc' <- - MultiRWSS.withMultiStateS BDEmpty $ - do traceIfDumpConf "bridoc raw" _dconf_dump_bridoc_raw $ - briDocToDoc $ unwrapBriDocNumbered $ briDoc - -- bridoc transformation: remove alts - transformAlts - briDoc >>= - mSet - mGet >>= - traceIfDumpConf "bridoc post-alt" _dconf_dump_bridoc_simpl_alt . - briDocToDoc - -- bridoc transformation: float stuff in - mGet <&> - transformSimplifyFloating >>= - mSet - mGet >>= - traceIfDumpConf - "bridoc post-floating" - _dconf_dump_bridoc_simpl_floating . - briDocToDoc - -- bridoc transformation: par removal - mGet <&> - transformSimplifyPar >>= - mSet - mGet >>= - traceIfDumpConf "bridoc post-par" _dconf_dump_bridoc_simpl_par . - briDocToDoc - -- bridoc transformation: float stuff in - mGet <&> - transformSimplifyColumns >>= - mSet - mGet >>= - traceIfDumpConf - "bridoc post-columns" - _dconf_dump_bridoc_simpl_columns . - briDocToDoc - -- -- bridoc transformation: indent - mGet <&> - transformSimplifyIndent >>= - mSet - mGet >>= - traceIfDumpConf - "bridoc post-indent" - _dconf_dump_bridoc_simpl_indent . - briDocToDoc - mGet >>= - traceIfDumpConf "bridoc final" _dconf_dump_bridoc_final . - briDocToDoc - -- -- convert to Simple type - -- simpl <- mGet <&> transformToSimple - -- return simpl - anns :: ExactPrint.Types.Anns <- mAsk - let filteredAnns = filterAnns ast anns - let state = - LayoutState - { _lstate_baseY = 0 - , _lstate_curY = 0 - , _lstate_indLevel = 0 - , _lstate_indLevelLinger = 0 - , _lstate_commentsPrior = extractCommentsPrior filteredAnns - , _lstate_commentsPost = extractCommentsPost filteredAnns - , _lstate_commentCol = Nothing - , _lstate_addSepSpace = Nothing - , _lstate_inhibitMTEL = False - , _lstate_isNewline = NewLineStateInit - } - state' <- MultiRWSS.withMultiStateS state $ layoutBriDocM briDoc' - let remainingComments = - Map.elems (_lstate_commentsPrior state') ++ - Map.elems (_lstate_commentsPost state') - remainingComments `forM_` - (mTell . (: []) . LayoutErrorUnusedComment . show . fmap fst) - return $ () -~~~~ - -## `hindent --style chris-done` output - -~~~~ .hs --- 10 20 30 40 50 60 70 80 -module Language.Haskell.Brittany.BriLayouter - (layoutBriDoc) - where - -layoutBriDoc :: Data.Data.Data ast - => ast -> BriDocNumbered -> PPM () -layoutBriDoc ast briDoc = - do - -- first step: transform the briDoc. - briDoc' <- - MultiRWSS.withMultiStateS BDEmpty $ - do traceIfDumpConf "bridoc raw" _dconf_dump_bridoc_raw $ - briDocToDoc $ unwrapBriDocNumbered $ briDoc - -- bridoc transformation: remove alts - transformAlts briDoc >>= - mSet - mGet >>= - traceIfDumpConf "bridoc post-alt" _dconf_dump_bridoc_simpl_alt . - briDocToDoc - -- bridoc transformation: float stuff in - mGet <&> - transformSimplifyFloating >>= - mSet - mGet >>= - traceIfDumpConf "bridoc post-floating" _dconf_dump_bridoc_simpl_floating . - briDocToDoc - -- bridoc transformation: par removal - mGet <&> - transformSimplifyPar >>= - mSet - mGet >>= - traceIfDumpConf "bridoc post-par" _dconf_dump_bridoc_simpl_par . - briDocToDoc - -- bridoc transformation: float stuff in - mGet <&> - transformSimplifyColumns >>= - mSet - mGet >>= - traceIfDumpConf "bridoc post-columns" _dconf_dump_bridoc_simpl_columns . - briDocToDoc - -- -- bridoc transformation: indent - mGet <&> - transformSimplifyIndent >>= - mSet - mGet >>= - traceIfDumpConf "bridoc post-indent" _dconf_dump_bridoc_simpl_indent . - briDocToDoc - mGet >>= - traceIfDumpConf "bridoc final" _dconf_dump_bridoc_final . - briDocToDoc - -- -- convert to Simple type - -- simpl <- mGet <&> transformToSimple - -- return simpl - anns :: ExactPrint.Types.Anns <- mAsk - let filteredAnns = filterAnns ast anns - let state = - LayoutState {_lstate_baseY = 0 - ,_lstate_curY = 0 - ,_lstate_indLevel = 0 - ,_lstate_indLevelLinger = 0 - ,_lstate_commentsPrior = - extractCommentsPrior filteredAnns - ,_lstate_commentsPost = extractCommentsPost filteredAnns - ,_lstate_commentCol = Nothing - ,_lstate_addSepSpace = Nothing - ,_lstate_inhibitMTEL = False - ,_lstate_isNewline = NewLineStateInit} - state' <- MultiRWSS.withMultiStateS state $ layoutBriDocM briDoc' - let remainingComments = - Map.elems (_lstate_commentsPrior state') ++ - Map.elems (_lstate_commentsPost state') - remainingComments `forM_` - (mTell . (: []) . LayoutErrorUnusedComment . show . fmap fst) - return $ () -~~~~ - -## `hindent --style gibiansky` output - -note that it managed to garbage the first comment to `-- 10 20 30 40 50 60 70 80` which i replaced again afterwards. - -~~~~ .hs --- 10 20 30 40 50 60 70 80 -module Language.Haskell.Brittany.BriLayouter (layoutBriDoc) where - -layoutBriDoc :: Data.Data.Data ast => ast -> BriDocNumbered -> PPM () -layoutBriDoc ast briDoc = do - -- first step: transform the briDoc. - briDoc' <- MultiRWSS.withMultiStateS BDEmpty $ do - traceIfDumpConf "bridoc raw" _dconf_dump_bridoc_raw $ briDocToDoc $ unwrapBriDocNumbered $ briDoc - -- bridoc transformation: remove alts - transformAlts briDoc >>= mSet - mGet >>= traceIfDumpConf "bridoc post-alt" - _dconf_dump_bridoc_simpl_alt . briDocToDoc - -- bridoc transformation: float stuff in - mGet <&> transformSimplifyFloating >>= mSet - mGet >>= traceIfDumpConf "bridoc post-floating" - _dconf_dump_bridoc_simpl_floating . briDocToDoc - -- bridoc transformation: par removal - mGet <&> transformSimplifyPar >>= mSet - mGet >>= traceIfDumpConf "bridoc post-par" - _dconf_dump_bridoc_simpl_par . briDocToDoc - -- bridoc transformation: float stuff in - mGet <&> transformSimplifyColumns >>= mSet - mGet >>= traceIfDumpConf "bridoc post-columns" - _dconf_dump_bridoc_simpl_columns . briDocToDoc - -- -- bridoc transformation: indent - mGet <&> transformSimplifyIndent >>= mSet - mGet >>= traceIfDumpConf "bridoc post-indent" - _dconf_dump_bridoc_simpl_indent . briDocToDoc - mGet >>= traceIfDumpConf "bridoc final" _dconf_dump_bridoc_final . briDocToDoc - -- -- convert to Simple type simpl <- mGet <&> transformToSimple return simpl + :: Data.Data.Data ast + => ast -> BriDocNumbered -> PPM () +layoutBriDoc ast briDoc + -- first step: transform the briDoc. + = do + briDoc' <- + MultiRWSS.withMultiStateS BDEmpty $ do + traceIfDumpConf "bridoc raw" _dconf_dump_bridoc_raw $ + briDocToDoc $ unwrapBriDocNumbered $ briDoc + -- bridoc transformation: remove alts + transformAlts briDoc >>= mSet + mGet >>= + traceIfDumpConf "bridoc post-alt" _dconf_dump_bridoc_simpl_alt . + briDocToDoc + -- bridoc transformation: float stuff in + mGet <&> transformSimplifyFloating >>= mSet + mGet >>= + traceIfDumpConf "bridoc post-floating" _dconf_dump_bridoc_simpl_floating . + briDocToDoc + -- bridoc transformation: par removal + mGet <&> transformSimplifyPar >>= mSet + mGet >>= + traceIfDumpConf "bridoc post-par" _dconf_dump_bridoc_simpl_par . + briDocToDoc + -- bridoc transformation: float stuff in + mGet <&> transformSimplifyColumns >>= mSet + mGet >>= + traceIfDumpConf "bridoc post-columns" _dconf_dump_bridoc_simpl_columns . + briDocToDoc + -- -- bridoc transformation: indent + mGet <&> transformSimplifyIndent >>= mSet + mGet >>= + traceIfDumpConf "bridoc post-indent" _dconf_dump_bridoc_simpl_indent . + briDocToDoc + mGet >>= + traceIfDumpConf "bridoc final" _dconf_dump_bridoc_final . briDocToDoc + -- -- convert to Simple type + -- simpl <- mGet <&> transformToSimple + -- return simpl anns :: ExactPrint.Types.Anns <- mAsk let filteredAnns = filterAnns ast anns - - let state = LayoutState + let state = + LayoutState { _lstate_baseY = 0 , _lstate_curY = 0 , _lstate_indLevel = 0 @@ -360,17 +205,84 @@ layoutBriDoc ast briDoc = do , _lstate_inhibitMTEL = False , _lstate_isNewline = NewLineStateInit } - state' <- MultiRWSS.withMultiStateS state $ layoutBriDocM briDoc' - - let remainingComments = Map.elems (_lstate_commentsPrior state') ++ Map.elems - (_lstate_commentsPost - state') - remainingComments `forM_` (mTell . - (: []) . - LayoutErrorUnusedComment . - show . - fmap fst) - + let remainingComments = + Map.elems (_lstate_commentsPrior state') ++ + Map.elems (_lstate_commentsPost state') + remainingComments `forM_` + (mTell . (: []) . LayoutErrorUnusedComment . show . fmap fst) return $ () ~~~~ + +and haskell-formatter (version 1.0.0) + +## `haskell-formatter` output + +~~~~ .hs +-- 10 20 30 40 50 60 70 80 +module Language.Haskell.Brittany.BriLayouter (layoutBriDoc) where + +layoutBriDoc :: Data.Data.Data ast => ast -> BriDocNumbered -> PPM () +layoutBriDoc ast briDoc + -- first step: transform the briDoc. + = do briDoc' <- MultiRWSS.withMultiStateS BDEmpty $ + do traceIfDumpConf "bridoc raw" _dconf_dump_bridoc_raw $ + briDocToDoc $ unwrapBriDocNumbered $ briDoc + -- bridoc transformation: remove alts + transformAlts briDoc >>= mSet + mGet >>= + traceIfDumpConf "bridoc post-alt" + _dconf_dump_bridoc_simpl_alt + . briDocToDoc + -- bridoc transformation: float stuff in + mGet <&> transformSimplifyFloating >>= mSet + mGet >>= + traceIfDumpConf "bridoc post-floating" + _dconf_dump_bridoc_simpl_floating + . briDocToDoc + -- bridoc transformation: par removal + mGet <&> transformSimplifyPar >>= mSet + mGet >>= + traceIfDumpConf "bridoc post-par" + _dconf_dump_bridoc_simpl_par + . briDocToDoc + -- bridoc transformation: float stuff in + mGet <&> transformSimplifyColumns >>= mSet + mGet >>= + traceIfDumpConf "bridoc post-columns" + _dconf_dump_bridoc_simpl_columns + . briDocToDoc + -- -- bridoc transformation: indent + mGet <&> transformSimplifyIndent >>= mSet + mGet >>= + traceIfDumpConf "bridoc post-indent" + _dconf_dump_bridoc_simpl_indent + . briDocToDoc + mGet >>= + traceIfDumpConf "bridoc final" _dconf_dump_bridoc_final + . briDocToDoc + -- -- convert to Simple type + -- simpl <- mGet <&> transformToSimple + -- return simpl + anns :: ExactPrint.Types.Anns <- mAsk + let filteredAnns = filterAnns ast anns + let state + = LayoutState{_lstate_baseY = 0, _lstate_curY = 0, + _lstate_indLevel = 0, _lstate_indLevelLinger = 0, + _lstate_commentsPrior = + extractCommentsPrior filteredAnns, + _lstate_commentsPost = + extractCommentsPost filteredAnns, + _lstate_commentCol = Nothing, + _lstate_addSepSpace = Nothing, + _lstate_inhibitMTEL = False, + _lstate_isNewline = NewLineStateInit} + + state' <- MultiRWSS.withMultiStateS state $ layoutBriDocM briDoc' + let remainingComments + = Map.elems (_lstate_commentsPrior state') ++ + Map.elems (_lstate_commentsPost state') + remainingComments `forM_` + (mTell . (: []) . LayoutErrorUnusedComment . show . fmap fst) + return $ () +~~~~