Safe Haskell | None |
---|---|

Language | Haskell2010 |

This module contains the implementation of the `dhall lint`

command

## Synopsis

- lint :: Eq s => 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 :: Eq s => Expr s Import -> Expr s Import Source #

Automatically improve a Dhall expression

Currently this:

- removes unused
`let`

bindings with`removeUnusedBindings`

. - fixes
`let a = x ≡ y`

to be`let a = assert : x ≡ y`

- consolidates nested
`let`

bindings to use a multiple-`let`

binding with`removeLetInLet`

- fixes paths of the form
`./../foo`

to`../foo`

fixAssert :: Expr s a -> Maybe (Expr s a) Source #

Fix `Let`

bindings that the user probably meant to be `assert`

s

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.