rule so we can improve error messages.
- Implement some sort of tracing based on the above.
+
+It should be possible to register goal "atexit [of goal]" handlers.
+These only run when the goal successfully exits, allowing:
+
+ - implicit memory_set
+
+ - implicit check_target
+
+Multiple definitions of goals:
+
+ let goal file_exists filename when filename `starts_with` "/foo" ->
+ ...
+
+ let goal file_exists filename when filename `starts_with` "/bar" ->
+ ...
+
+ - Might be implemented something like this:
+ add_goal (`File_exists, fun patt -> raise Matches, fun patt -> expr)
+ then when we run goals, we check them against all patterns (how?)
+ and only if one matches to we run that function. Multi-matches are
+ not permitted.