haskell-formatter alternatives and similar packages
Based on the "Development" category.
Alternatively, view haskell-formatter alternatives based on common mentions on social networks and blogs.
-
hadolint
Dockerfile linter, validate inline bash, written in Haskell -
ShellCheck
ShellCheck, a static analysis tool for shell scripts -
fay-base
A proper subset of Haskell that compiles to JavaScript -
criterion
A powerful but simple library for measuring the performance of Haskell code. -
haskell-lsp
Haskell library for the Microsoft Language Server Protocol -
cabal-install-parsers
Scripts and instructions for using CI services (e.g. Travis CI or Appveyor) with multiple GHC configurations -
stgi
A user-centric visual STG implementation to help understand GHC/Haskell's execution model. -
structured-haskell-mode
Structured editing minor mode for Haskell in Emacs -
retrie
Retrie is a powerful, easy-to-use codemodding tool for Haskell. -
inline-c
Write Haskell source files including C code inline. No FFI required. -
inline-java
Haskell/Java interop via inline Java code in Haskell modules. -
gi-atk
Generate Haskell bindings for GObject-Introspection capable libraries -
gtk2hs-buildtools
GUI library for Haskell based on GTK+ -
lambdabot-core
A friendly IRC bot and apprentice coder, written in Haskell. -
fourmolu
A fourk of ormolu that uses four space indentation and allows arbitrary configuration. Don't like it? PRs welcome! -
c2hs
c2hs is a pre-processor for Haskell FFI bindings to C libraries -
scion
OLD, DEPRECATED: Use this instead https://github.com/haskell/haskell-ide-engine -
hie-bios
Set up a GHC API session for various Haskell Projects -
lambdabot
A friendly IRC bot and apprentice coder, written in Haskell. -
threadscope
A graphical tool for profiling parallel Haskell programs
Static code analysis for 29 languages.
Do you think we are missing an alternative of haskell-formatter or a related project?
Popular Comparisons
README
Haskell Formatter
The Haskell Formatter formats Haskell source code. It is strict in that it fundamentally rearranges code.
Installation
Install it by running
stack install haskell-formatter
or
cabal new-install haskell-formatter
You are ready when
haskell-formatter --help
works.
Usage
Basics
Read source code from Input.hs
, format it, and write it to Output.hs
by
haskell-formatter --input Input.hs --output Output.hs
If the input or output file is not given, it defaults to the corresponding standard stream. This allows commands like
haskell-formatter < Input.hs
To format a file in-place, use the --force
option as in
# Warning: this overwrites the file `Code.hs`.
haskell-formatter --force --input Code.hs --output Code.hs
For more help about the usage, call
haskell-formatter --help
Formatting Many Files
For a diff of how code in the current folder would be formatted, without actually changing anything, run
find . -name '*.hs' -type f -print0 \
| xargs -0 -n 1 bash -c 'haskell-formatter < "[email protected]" | diff -u "[email protected]" -' --
The returned exit status is nonzero if there are unformatted files. This may be useful for continuous integration.
To format any *.hs
files in a folder code/
or (recursively) in its subfolders, run
# Warning: this overwrites files, so better back them up first.
find code/ -name '*.hs' -type f -print0 \
| xargs -0 -I {} -n 1 haskell-formatter --force --input {} --output {}
Style Configuration
The formatting style can be configured with a file referred by the --style
option. For instance, the call
haskell-formatter --style my_style.yaml --input Input.hs --output Output.hs
uses my_style.yaml
as a style file. Such files are in the YAML format. The following is an [example style file](testsuite/resources/examples/default_style.yaml), which at the same time shows the available keys with their default values.
<!--- GitHub does currently not allow to include files (https://github.com/github/markup/issues/346).
Thus, the file content is replicated here. There is a test which checks that the strings of both sources are equal. --->
# Lines should be no longer than this length in characters.
line_length_limit: 80
# How much to spread code over multiple lines instead of trying to fill a single
# line. More precisely, this guides the ratio of "line_length_limit" to the
# ribbon length (the number of characters on a line without leading and trailing
# whitespace). Only the lowest value of 1 forces "line_length_limit" to be
# applied strictly.
# Reference: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.8777
ribbons_per_line: 1
# More than this number of empty lines in succession are merged.
successive_empty_lines_limit: 1
# Indentation lengths in characters.
indentations:
class: 8 # "class" and "instance" declarations.
do: 3 # "do" notation.
case: 4 # Body of "case" expressions.
let: 4 # Declarations in "let" expressions.
where: 6 # Declarations in "where" clauses.
onside: 2 # Continuation lines which would otherwise be offside.
# Decides which parts of the code to sort.
order:
# Sequence of import declarations.
import_declarations: true
# Entities of import lists.
import_entities: true
Related Projects
You may like to have a look at the following projects, which aim at formatting Haskell code, too.
*Note that all licence references and agreements mentioned in the haskell-formatter README section above
are relevant to that project's source code only.