aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/unpoly.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2008-09-11 17:41:52 -0400
committerGravatar Adam Chlipala <adamc@hcoop.net>2008-09-11 17:41:52 -0400
commit48b9d4dae3d1ca6ff39e71571a6db3a43497c9f9 (patch)
tree22ffe528ac30aa133fde37ddcafb13a92cd22357 /src/unpoly.sml
parent05fbd01cabc967d7216d8cbe701ac10ad797b122 (diff)
Crud listing IDs
Diffstat (limited to 'src/unpoly.sml')
-rw-r--r--src/unpoly.sml16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/unpoly.sml b/src/unpoly.sml
index 12cff6c8..5236961b 100644
--- a/src/unpoly.sml
+++ b/src/unpoly.sml
@@ -56,7 +56,19 @@ fun unpolyNamed (xn, rep) =
rep
else
e
- | ECApp (e, _) => #1 e
+ | ECApp (e', _) =>
+ let
+ fun isTheOne (e, _) =
+ case e of
+ ENamed xn' => xn' = xn
+ | ECApp (e, _) => isTheOne e
+ | _ => false
+ in
+ if isTheOne e' then
+ #1 e'
+ else
+ e
+ end
| _ => e}
type state = {
@@ -110,7 +122,7 @@ fun exp (e, st : state) =
let
val e = foldl (fn ((_, n, n_old, _, _, _), e) =>
unpolyNamed (n_old, ENamed n) e)
- e vis
+ e vis
in
SOME (t, e)
end