From 48b9d4dae3d1ca6ff39e71571a6db3a43497c9f9 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Thu, 11 Sep 2008 17:41:52 -0400 Subject: Crud listing IDs --- src/unpoly.sml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/unpoly.sml') 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 -- cgit v1.2.3