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.
* Fix casts in scheme evaluator
We really need test cases for all the primitives before we can use this
evaluator properly. Also test cases that run inside an environment,
which are a bit harder to construct.
* Add the cast fixes to racket support code
* More racket compile time evaluation fixes
We had the chez version of some primtives in the ct-support file. We
need a full set of tests for the primitives here too...
We recently changed the meaning of this (calculated during 'quote'
rather than after) and by experimentation it seemed to be too high. It
is a somewhat arbitrary heuristic to decide when to fully normalise, but
this seems to help as a better default in some cases.