The prelude interfaces that have default definitions for all of
their fields are declared total so that users are forced to think
about meeting the minimal requirements for an implementation to be
valid.
* Add field for universe level to TType
This doesn't do anything yet, other than introduce new universe
variables whenever we introduce a new type, but it's the first step
towards checking the universe hierarchy. Next step is to add constraints
when checking pi, unifying/converting types, and when adding data
constructors.
* TTC version increment
Thought I'd done this, but apparently I didn't save the file. Oops!
* Add structure for universe constraints
* Fix display of ambiguity errors
We need to store the Context in errors at the point where the error
occurs, or we might get some nonsense in the message. There's still a
couple of places in Error where we don't do this right. This fixes one
of them, and improves a few messages in the process.
We need to store the Context in errors at the point where the error
occurs, or we might get some nonsense in the message. There's still a
couple of places in Error where we don't do this right. This fixes one
of them, and improves a few messages in the process.
* [ new ] :doc for keywords
* [ doc ] for visibility
* [ more ] fixing help text, sentence for "mutual"
* [ doc ] for if then else
* [ doc ] for implicit arguments
* [ doc ] import
* [ cleanup ] doc for data
* [ doc ] for record
* [ doc ] for forall quantifier
* [ doc ] for `in' keyword
* [ doc ] for parameters block
* [ fix ] missing fence
* [ doc ] for where and mutual blocks
* [ doc ] for namespace blocks
* [ doc ] for with/proof
* [ doc ] for do blocks
* [ doc ] for rewrite
* [ doc ] for let binding
* [ doc ] for case...of and interfaces
* [ doc ] for fixity
Also fix some typo
Also add 1 doc comment
Some code cleanup/optimisation too:
- with vmcode interpreter, don't generate indentation
if it's not needed
- don't add inline if function marked noinline
- remove some unused logging topics
* deprecate Data.Nat.Order.decideLTE
* Add properties for LTE/GTE that produce the difference.
* remove deprecated function now that it is available in the base library.
* remove two deprecated lines.
* remove module deprecated since v0.4.0
* fix prelude reference to renamed primitive.
* finish removing Data.Num.Implementations
* remove deprecated dirEntry function.
* remove deprecated fastAppend. Update CHANGELOG.
* replace fastAppend in test case
* replace fastAppend uses in compiler.
* remove new properties that weren't actually very new.
* Implemented %noinline
* Removed trailing spaces.
* Added missing case in Reify FnOpt
* Added error message when both %inline and %noinline are set.
* Added test.
* Changed from perror to error
* Update documentation and changelog for string interpolation
* Fix typo in changelog
* fix documentation about desugaring of interpolate
* Update CHANGELOG.md
Co-authored-by: G. Allais <guillaume.allais@ens-lyon.org>
Co-authored-by: G. Allais <guillaume.allais@ens-lyon.org>
* Case tree/coverage checking shortcuts
We were calculating some things we didn't need - we can stop computing
the type of a case operator when we know the head, because that's all we
need for coverage checking. We can also abandon checking a left hand
side for coverage purposes if we encounter an empty type. Both of these
can save quite a bit of time in complex cases.
* Normalisation heuristic for pattern variables
If they get bit, fully normalise (like we do with case types) since it's
likely a big term with lots of applications will normalise a lot.