purescript-0.7.2.0: PureScript Programming Language Compiler

Safe HaskellNone
LanguageHaskell98

Language.PureScript.Linter.Exhaustive

Description

| Module for exhaustivity checking over pattern matching definitions | The algorithm analyses the clauses of a definition one by one from top | to bottom, where in each step it has the cases already missing (uncovered), | and it generates the new set of missing cases.

Synopsis

Documentation

checkExhaustive :: forall m. MonadWriter MultipleErrors m => Environment -> ModuleName -> [CaseAlternative] -> m () Source

Main exhaustivity checking function Starting with the set `uncovered = { _ }` (nothing covered, one `_` for each function argument), it partitions that set with the new uncovered cases, until it consumes the whole set of clauses. Then, returns the uncovered set of case alternatives.

checkExhaustiveModule :: forall m. (Applicative m, MonadWriter MultipleErrors m) => Environment -> Module -> m () Source

Exhaustivity checking over a single module