From cc68954e80969fbc73b60c1ce6e4ad4ed553ccd7 Mon Sep 17 00:00:00 2001 From: barras Date: Mon, 19 Jun 2006 18:54:49 +0000 Subject: bug serieux efficacite de ltac git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@8963 85f007b7-540e-0410-9357-904b9bb8a0f7 --- pretyping/pattern.ml | 2 +- pretyping/pattern.mli | 2 +- tactics/tacinterp.ml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pretyping/pattern.ml b/pretyping/pattern.ml index 1453aa218b..979ecb0b17 100644 --- a/pretyping/pattern.ml +++ b/pretyping/pattern.ml @@ -132,7 +132,7 @@ let map_pattern_with_binders g f l = function let map_pattern f = map_pattern_with_binders (fun () -> ()) (fun () -> f) () let rec instantiate_pattern lvar = function - | PVar id as x -> (try List.assoc id lvar with Not_found -> x) + | PVar id as x -> (try Lazy.force(List.assoc id lvar) with Not_found -> x) | (PFix _ | PCoFix _) -> error ("Not instantiable pattern") | c -> map_pattern (instantiate_pattern lvar) c diff --git a/pretyping/pattern.mli b/pretyping/pattern.mli index 2ecb85ba4a..ee0eefade7 100644 --- a/pretyping/pattern.mli +++ b/pretyping/pattern.mli @@ -76,6 +76,6 @@ val pattern_of_rawconstr : rawconstr -> patvar list * constr_pattern val instantiate_pattern : - (identifier * constr_pattern) list -> constr_pattern -> constr_pattern + (identifier * constr_pattern Lazy.t) list -> constr_pattern -> constr_pattern val lift_pattern : int -> constr_pattern -> constr_pattern diff --git a/tactics/tacinterp.ml b/tactics/tacinterp.ml index fef9ba95a0..0c7f65c2a7 100644 --- a/tactics/tacinterp.ml +++ b/tactics/tacinterp.ml @@ -916,7 +916,7 @@ let give_context ctxt = function (* Reads a pattern by substituing vars of lfun *) let eval_pattern lfun c = - let lvar = List.map (fun (id,c) -> (id,pattern_of_constr c)) lfun in + let lvar = List.map (fun (id,c) -> (id,lazy(pattern_of_constr c))) lfun in instantiate_pattern lvar c let read_pattern evc env lfun = function -- cgit v1.2.3