Safe Haskell | None |
---|---|
Language | Haskell98 |
Chris Done's style.
Documented here: https://github.com/chrisdone/haskell-style-guide
- shortName :: Int64
- smallColumnLimit :: Int64
- data State = State
- chrisDone :: Style
- types :: Type NodeInfo -> Printer s ()
- decl :: Decl NodeInfo -> Printer s ()
- fieldupdate :: FieldUpdate NodeInfo -> Printer t ()
- rhs :: Rhs NodeInfo -> Printer t ()
- unguardedrhs :: Rhs NodeInfo -> Printer t ()
- unguardedalt :: Rhs NodeInfo -> Printer t ()
- contextualGuardedRhs :: GuardedRhs NodeInfo -> Printer t ()
- guardedrhs :: GuardedRhs NodeInfo -> Printer t ()
- guardedalt :: GuardedRhs NodeInfo -> Printer t ()
- stmt :: Stmt NodeInfo -> Printer t ()
- exp :: Exp NodeInfo -> Printer t ()
- sandboxSingles :: Pretty ast => [ast NodeInfo] -> Printer t (Bool, PrintState t)
- multi :: Pretty ast => Int64 -> [ast NodeInfo] -> Bool -> Printer t ()
- sandboxNonOverflowing :: Pretty ast => [ast NodeInfo] -> Printer t ((Bool, Bool), PrintState t)
- isShort :: Pretty ast => ast NodeInfo -> Printer t (Bool, PrintState t)
- isSmall :: MonadState (PrintState t) m => m a -> m (Bool, PrintState t)
- isSmallFitting :: MonadState (PrintState t) m => m a -> m (Bool, PrintState t)
- isFlat :: Exp NodeInfo -> Bool
- fitsOnOneLine :: MonadState (PrintState s) m => m a -> m (Bool, PrintState s)
- fitsInColumnLimit :: Printer t a -> Printer t (Bool, PrintState t)
- infixApp :: Exp NodeInfo -> Exp NodeInfo -> QOp NodeInfo -> Exp NodeInfo -> Maybe Int64 -> Printer s ()
- data OpChainLink l
- = OpChainExp (Exp l)
- | OpChainLink (QOp l)
- flattenOpChain :: Exp l -> [OpChainLink l]
- dependOrNewline :: Printer t () -> Exp NodeInfo -> (Exp NodeInfo -> Printer t ()) -> Printer t ()
Documentation
smallColumnLimit :: Int64 Source #
Column limit: 50
decl :: Decl NodeInfo -> Printer s () Source #
Pretty print type signatures like
foo :: (Show x,Read x) => (Foo -> Bar) -> Maybe Int -> (Char -> X -> Y) -> IO ()
fieldupdate :: FieldUpdate NodeInfo -> Printer t () Source #
I want field updates to be dependent or newline.
contextualGuardedRhs :: GuardedRhs NodeInfo -> Printer t () Source #
Decide whether to do alts or rhs based on the context.
guardedrhs :: GuardedRhs NodeInfo -> Printer t () Source #
I want guarded RHS be dependent or newline.
guardedalt :: GuardedRhs NodeInfo -> Printer t () Source #
I want guarded alts be dependent or newline.
sandboxSingles :: Pretty ast => [ast NodeInfo] -> Printer t (Bool, PrintState t) Source #
Sandbox and render the nodes on multiple lines, returning whether each is a single line.
multi :: Pretty ast => Int64 -> [ast NodeInfo] -> Bool -> Printer t () Source #
Render multi-line nodes.
sandboxNonOverflowing :: Pretty ast => [ast NodeInfo] -> Printer t ((Bool, Bool), PrintState t) Source #
Sandbox and render the node on a single line, return whether it's on a single line and whether it's overflowing.
isShort :: Pretty ast => ast NodeInfo -> Printer t (Bool, PrintState t) Source #
Is the expression "short"? Used for app heads.
isSmall :: MonadState (PrintState t) m => m a -> m (Bool, PrintState t) Source #
Is the given expression "small"? I.e. does it fit on one line and
under smallColumnLimit
columns.
isSmallFitting :: MonadState (PrintState t) m => m a -> m (Bool, PrintState t) Source #
Is the given expression "small"? I.e. does it fit under
smallColumnLimit
columns.
fitsOnOneLine :: MonadState (PrintState s) m => m a -> m (Bool, PrintState s) Source #
Does printing the given thing overflow column limit? (e.g. 80)
fitsInColumnLimit :: Printer t a -> Printer t (Bool, PrintState t) Source #
Does printing the given thing overflow column limit? (e.g. 80)
infixApp :: Exp NodeInfo -> Exp NodeInfo -> QOp NodeInfo -> Exp NodeInfo -> Maybe Int64 -> Printer s () Source #
data OpChainLink l Source #
A link in a chain of operator applications.
OpChainExp (Exp l) | |
OpChainLink (QOp l) |
Show l => Show (OpChainLink l) Source # | |
flattenOpChain :: Exp l -> [OpChainLink l] Source #
Flatten a tree of InfixApp expressions into a chain of operator links.