diff options
author | Adam Chlipala <adamc@hcoop.net> | 2008-09-11 17:41:52 -0400 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2008-09-11 17:41:52 -0400 |
commit | 48b9d4dae3d1ca6ff39e71571a6db3a43497c9f9 (patch) | |
tree | 22ffe528ac30aa133fde37ddcafb13a92cd22357 /src/unpoly.sml | |
parent | 05fbd01cabc967d7216d8cbe701ac10ad797b122 (diff) |
Crud listing IDs
Diffstat (limited to 'src/unpoly.sml')
-rw-r--r-- | src/unpoly.sml | 16 |
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 |