-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.
+Infinite loop when you have this goal:
+goal pod2man (page, section) = "docs/%page.%section" : "docs/%page.pod" { ... }
+This is caused by %section matching "pod" so the rule is called
+again, even if the local file docs/%page.pod actually exists.
+
+Implement make-like “eval” function (similar to include directive,
+but it evaluates the output of a function as Goalfile syntax).
+
+Implement make-like “origin” function. This is easy but it requires
+us to track to the origin of definitions which we do not do at
+the moment.
+
+Some kind of “source” directive. If goals sees this then
+it automatically sources the parameter (a shell script) into
+every shell command.
+
+Allow code sections to be written in other languages, eg OCaml,
+Python, etc. The syntax might look like:
+ {#!OCAML
+ ocaml code
+ }
+Also provide better integration, so we can accurately pass predicate
+constructors into these other language sections.
+
+Limit parallelism within the Goalfile (like make's .NOPARALLEL),
+something like ‘let max_jobs = 8’