| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Dhall.Lint
Contents
Description
This module contains the implementation of the dhall lint command
Synopsis
- lint :: Expr s Import -> Expr s Import
- removeUnusedBindings :: Eq a => Expr s a -> Maybe (Expr s a)
- fixAssert :: Expr s a -> Maybe (Expr s a)
- fixParentPath :: Expr s Import -> Maybe (Expr s Import)
- addPreludeExtensions :: Expr s Import -> Maybe (Expr s Import)
- removeLetInLet :: Expr s a -> Maybe (Expr s a)
- useToMap :: Expr s a -> Maybe (Expr s a)
Lint
lint :: Expr s Import -> Expr s Import Source #
Automatically improve a Dhall expression
Currently this:
- removes unused letbindings withremoveUnusedBindings.
- fixes let a = x ≡ yto belet a = assert : x ≡ y
- consolidates nested letbindings to use a multiple-letbinding withremoveLetInLet
- fixes paths of the form ./../footo../foo
fixAssert :: Expr s a -> Maybe (Expr s a) Source #
Fix Let bindings  that the user probably meant to be asserts
fixParentPath :: Expr s Import -> Maybe (Expr s Import) Source #
This transforms ./../foo into ../foo
addPreludeExtensions :: Expr s Import -> Maybe (Expr s Import) Source #
This transforms https://prelude.dhall-lang.org/…/foo to
    https://prelude.dhall-lang.org/…/foo.dhall
useToMap :: Expr s a -> Maybe (Expr s a) Source #
This replaces a record of key-value pairs with the equivalent use of
   toMap
This is currently not used by dhall lint because this would sort Map
 keys, which is not necessarily a behavior-preserving change, but is still
 made available as a convenient rewrite rule.  For example,
 {json,yaml}-to-dhall use this rewrite to simplify their output.