-'let :=' for immediate evaluation in assignment.
+'let :=' for immediate evaluation in assignment. Does this work for
+included files? Also ?= to only override if not already defined.
+
+Default parameters, ie:
+ goal foo (name, release = true) = ...
+You might only allow defaults to be added to the end, or you
+might allow goals to be called with labelled parameters.
+
+Fix: You must use 'all ()' on the command line.
+
+"Quiet" code. Generally {CODE} sections in user files should be
+echos, and those in stdlib should run silently (except if debugging).
+Maybe we should have a quiet keyword to indicate this?
+
+Deleting target files if goals is interrupted, but only if the
+timestamp changes (what about non-*files?). Also: atomic code. This
+will delete the target if the code doesn't run to completion. (make
+doesn't do this, but probably it should).
+
+Implement parallel builds.
+
+Conditional sections (same as "ifeq" etc in make).
+
+Let within functions and goals, eg:
+ function foo () =
+ let temp = "%bar%baz";
+ { .... }
+Unclear if this would be helpful or not.
+
+Implement more make functions, see:
+https://www.gnu.org/software/make/manual/html_node/Functions.html#Functions
+
+Make re-execs itself if the Makefile (or any include) changes, and
+goals should do something similar. See:
+https://www.gnu.org/software/make/manual/html_node/Remaking-Makefiles.html
+
+Code should be an expression, eg this ought to work:
+let foo = { echo "hello" }
+and/or anonymous functions:
+let foo = function (arg) { ... }
+
+Functions returning plain strings and lists of strings.
+function (foo, bar) returning string = { echo hello }
+function (foo, bar) returning strings = { echo hello; echo goodbye }
+Then re-add the sort function.
+
+Should the environment be populated by the actual environment, eg:
+let homedir = "%HOME"