src/Pure/term.ML
changeset 2959 071bfb16586f
parent 2792 6c17c5ec3d8b
child 3781 ec519ba6196e
equal deleted inserted replaced
2958:7837471d2f27 2959:071bfb16586f
   322   | betapply (f,u) = f$u;
   322   | betapply (f,u) = f$u;
   323 
   323 
   324 (** Equality, membership and insertion of indexnames (string*ints) **)
   324 (** Equality, membership and insertion of indexnames (string*ints) **)
   325 
   325 
   326 (*optimized equality test for indexnames.  Yields a huge gain under Poly/ML*)
   326 (*optimized equality test for indexnames.  Yields a huge gain under Poly/ML*)
   327 fun eq_ix ((a:string, i:int), (a',i')) = (a=a') andalso i=i';
   327 fun eq_ix ((a, i):indexname, (a',i'):indexname) = (a=a') andalso i=i';
   328 
   328 
   329 (*membership in a list, optimized version for indexnames*)
   329 (*membership in a list, optimized version for indexnames*)
   330 fun mem_ix (x:string*int, []) = false
   330 fun mem_ix (_, []) = false
   331   | mem_ix (x, y :: ys) = eq_ix(x,y) orelse mem_ix (x, ys);
   331   | mem_ix (x, y :: ys) = eq_ix(x,y) orelse mem_ix (x, ys);
   332 
   332 
   333 (*insertion into list, optimized version for indexnames*)
   333 (*insertion into list, optimized version for indexnames*)
   334 fun ins_ix (x,xs) = if mem_ix (x, xs) then xs else x :: xs;
   334 fun ins_ix (x,xs) = if mem_ix (x, xs) then xs else x :: xs;
   335 
   335