Enhancements to pa_goal: - Include the goal name, source file location in the generated 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.