diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-06-19 17:11:24 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-06-19 17:11:24 -0400 |
commit | 6924bb5d394ee9cbdf7dbf376c45a4ee04383c5c (patch) | |
tree | 537dd4799d78f6bed5ccac263825fad39f0b5747 /src/expl_print.sml | |
parent | 03ecfc6bbbff1492662930a708a1e9be685ef023 (diff) |
Explifying functors
Diffstat (limited to 'src/expl_print.sml')
-rw-r--r-- | src/expl_print.sml | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/expl_print.sml b/src/expl_print.sml index 4841f0c7..0e7f66eb 100644 --- a/src/expl_print.sml +++ b/src/expl_print.sml @@ -293,6 +293,30 @@ and p_sgn env (sgn, _) = newline, string "end"] | SgnVar n => string (#1 (E.lookupSgnNamed env n)) + | SgnFun (x, n, sgn, sgn') => box [string "functor", + space, + string "(", + string x, + space, + string ":", + space, + p_sgn env sgn, + string ")", + space, + string ":", + space, + p_sgn (E.pushStrNamed env x n sgn) sgn'] + | SgnWhere (sgn, x, c) => box [p_sgn env sgn, + space, + string "where", + space, + string "con", + space, + string x, + space, + string "=", + space, + p_con env c] fun p_decl env ((d, _) : decl) = case d of @@ -349,6 +373,32 @@ and p_str env (str, _) = | StrProj (str, s) => box [p_str env str, string ".", string s] + | StrFun (x, n, sgn, sgn', str) => + let + val env' = E.pushStrNamed env x n sgn + in + box [string "functor", + space, + string "(", + string x, + space, + string ":", + space, + p_sgn env sgn, + string ")", + space, + string ":", + space, + p_sgn env' sgn', + space, + string "=>", + space, + p_str env' str] + end + | StrApp (str1, str2) => box [p_str env str1, + string "(", + p_str env str2, + string ")"] and p_file env file = let |