From 4422e16f529359bb96c7eee214b2b6648958ef48 Mon Sep 17 00:00:00 2001 From: ppedrot Date: Tue, 18 Sep 2012 14:26:42 +0000 Subject: Cleaning interface of Util. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@15817 85f007b7-540e-0410-9357-904b9bb8a0f7 --- pretyping/evarutil.ml | 9 ++++++++- pretyping/inductiveops.ml | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'pretyping') diff --git a/pretyping/evarutil.ml b/pretyping/evarutil.ml index af3227729e..e51415abb1 100644 --- a/pretyping/evarutil.ml +++ b/pretyping/evarutil.ml @@ -100,9 +100,16 @@ let is_ground_env evd env = | _ -> true in List.for_all is_ground_decl (rel_context env) && List.for_all is_ground_decl (named_context env) + (* Memoization is safe since evar_map and environ are applicative structures *) -let is_ground_env = memo1_2 is_ground_env +let memo f = + let m = ref None in + fun x y -> match !m with + | Some (x', y', r) when x == x' && y == y' -> r + | _ -> let r = f x y in m := Some (x, y, r); r + +let is_ground_env = memo is_ground_env (* Return the head evar if any *) diff --git a/pretyping/inductiveops.ml b/pretyping/inductiveops.ml index 4062117b0f..de6873ba3d 100644 --- a/pretyping/inductiveops.ml +++ b/pretyping/inductiveops.ml @@ -82,7 +82,7 @@ let mis_is_recursive_subset listind rarg = Array.exists one_is_rec (dest_subterms rarg) let mis_is_recursive (ind,mib,mip) = - mis_is_recursive_subset (interval 0 (mib.mind_ntypes-1)) + mis_is_recursive_subset (List.interval 0 (mib.mind_ntypes - 1)) mip.mind_recargs let mis_nf_constructor_type (ind,mib,mip) j = -- cgit v1.2.3