Annotation of researchv10no/cmd/sml/src/util/arrayext.sml, revision 1.1.1.1

1.1       root        1: (* Copyright 1989 by AT&T Bell Laboratories *)
                      2: (* util/arrayext.sml *)
                      3: 
                      4: signature ARRAYEXT =
                      5: sig
                      6:   val copy : '1a array * int -> '1a array
                      7:   val app : ('a -> 'b) * 'a array * int -> unit
                      8:   val map : ('1a -> '1a) * '1a array * int -> '1a array
                      9: end
                     10: 
                     11: structure ArrayExt : ARRAYEXT =
                     12: struct
                     13: 
                     14:   (* copy -- was copyarray.  Used in EnvAccess and Parse *)
                     15:   fun copy(a,n) =
                     16:       (* assume n <= length a *)
                     17:       let val new = array(n,a sub 0)
                     18:          fun loop i = (update(new,i,a sub i); loop(i+1))
                     19:        in loop 0
                     20:          handle Subscript => new
                     21:       end
                     22: 
                     23:   (* app -- was arrayapp.  Used in SigMatch and Parse *)
                     24:   fun app (f,a,start) =  
                     25:       let fun loop i = (f(a sub i); loop(i+1))
                     26:        in loop start handle Subscript => ()
                     27:       end
                     28: 
                     29:   (* map -- was arraymap.  Used in SigMatch, and somewhat specialized *)
                     30:   fun map (f,a,start) =
                     31:       let val b = array(Array.length a, a sub 0) handle Subscript => a
                     32:          fun loop i = (update(b,i,f(a sub i)); loop(i+1))
                     33:        in loop start handle Subscript => b
                     34:       end
                     35: 
                     36: end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.