Compiler TODO for algebraic types

* doc/todo.texi (Compiler): Add section.
master
Mike Gerwitz 2017-07-19 16:22:08 -04:00
parent 222a71b34c
commit a4b3d9e4a4
1 changed files with 29 additions and 0 deletions

View File

@ -50,6 +50,35 @@ Performance has improved drastically,
@end enumerate
@section Compiler
The compiler itself has cruft from over the years and most of the code
exists from the design prior to object files and symbol tables.
There is plenty of room for optimization.
@enumerate
@item Validate against an algebraic type system.
Certain classes of bugs can be avoided entirely by stating that
values must always be a vector of positive real numbers, for
example.
The compiler can determine the type of expressions by the
symbols it references and by its child expressions.
In situations that are not resolvable at compile-time,
runtime checks via terminating classifications would do;
an example being the sum of two unsigned integers being
non-zero.
In cases where types are simply too difficult to determine
without significant compiler work,
annotations can be used to declare expressions equivalent
to certain mathematical concepts
(e.g. ``this function is equivalent to rounding to the
nearest integer'');
this can also serve as an alternative to primitives in
certain instances,
since native target language features could be used.
@end enumerate
@section Input/Return Map
@enumerate
@item Generate normal packages and use templates rather than a