Makes more closure properties hold, but weakens occurrence typing for
some comparisons involving flonums.
original commit: a6d5a98b61c033340c66b91dd53c18ea50db8c60
- Allow indexing into a VectorTop, with result `Any`.
- Don't use special typing rules for applications when the operator
has an annotation or instantiation.
Closes PR 12887.
Closes PR 12888.
original commit: 9e097866bfcb0f2eed86993861f09ecf82b98e47
Added empty-sequence type (prints funny but works polymorphically; will submit bug report)
Loosened type of sequence-andmap (can't mimic andmap's predicate type)
original commit: 392d7bfbadee8143f6ec76e965f0c4e31246695e
Each typed module now defines a submodule named `type-decl`.
This module performs the type environment initialization (along
with other environment updates) when invoked. Additionall,
every typed module, when invoked, performs a for-syntax addition
to a list specifying the submodules that need invocation.
This invocation is then performed by the `#%module-begin` from
Typed Racket.
The `type-decl` module always goes at the beginning of the
expanded module, so that it's available at syntax-time for all
the other submodules. This involved adding pre- and post-
syntaxes for the results of typechecking.
This allows significant runtime dependency reduction from the
main `typed/racket` and `typed/racket/base` languages (not yet
complete).
original commit: 6bf141513fa9387f438bb0f328f5ec67ada8f757
- Remove tracing requires.
- Use lists instead of sets in a few environments.
- Small cleanups.
original commit: 88ff5fee69ecf58527bb76923f4d4fd91aaa1967
Types for nan?, infinite?, pi.f, exact-round, exact-floor, exact-ceiling,
exact-truncate, degrees->radians, radians->degrees
Extended tc-random-testing: generates exact integers and rationals now
Fixed types of sinh, cosh and tanh to account for underflow and NaNs
original commit: 8f840bd07b28ac9bff22c2fa728fb16a9857cdb4
Altered TR's random arithmetic testing to generate single-flonums and very small flonums; fails now because of erroneous types
Fixes to sgn, sinh, cosh, and tanh:
* preserve single-flonum-ness
* correct zero sign (-0.0) for negative return values that are smaller than epsilon
* correct behavior with NaN and infinite inputs
original commit: a713ca8a8b6c7aed987e80d0621484e68bc3c6f5
Caveats:
- keyword function definitions do not define static
bindings, thus limiting optimization opportunities
- can't use `define:`, `lambda:`, etc with keywords
- error messages sometimes expose the implementation
- the optimizer skips most of the generated code for
keyword functions definitions (user-level code is
optimized)
original commit: 865a2cdcbd3e4eea748e57859c846c0f7ffd61ad
Previously, some hacks were used to obtain the internal
identifiers that implemented keyword functions directly, and
give them types at startup. Now, the primary "function"
(eg, `sort`) is given a type, and when used, the residual
syntax properties are used to find `sort` from the real
functions, and then the type of the real function is computed
from the type of `sort`.
Some creativity was required in the types of functions which
take optional arguments that when present, alter the return type,
such as `regexp-match*` and `file->list`.
original commit: a377c4235743296e337db64341c8518fc7dce965