aboutsummaryrefslogtreecommitdiff
path: root/sucl/dnc.icl
diff options
context:
space:
mode:
Diffstat (limited to 'sucl/dnc.icl')
-rw-r--r--sucl/dnc.icl13
1 files changed, 13 insertions, 0 deletions
diff --git a/sucl/dnc.icl b/sucl/dnc.icl
new file mode 100644
index 0000000..b17c08f
--- /dev/null
+++ b/sucl/dnc.icl
@@ -0,0 +1,13 @@
+implementation module dnc
+
+import graph
+import StdEnv
+
+// dnc is like varcontents, but can give a more reasonable error message
+// when the contents is used when undefined.
+dnc :: (var->.String) !(Graph .sym var) var -> (.Bool,Node .sym var) | == var
+dnc makemessage graph var
+| fst vc = vc
+ = (False,(wrong "symbol",wrong "arguments"))
+ where vc = varcontents graph var
+ wrong element = abort ("getting "+++element+++" of free variable: "+++makemessage var)