Mike Gerwitz

Activist for User Freedom

aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/todo.texi29
1 files changed, 29 insertions, 0 deletions
diff --git a/doc/todo.texi b/doc/todo.texi
index fde27e2..6ef7b1b 100644
--- a/doc/todo.texi
+++ b/doc/todo.texi
@@ -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