Annotation of researchv10no/cmd/sml/src/util/arrayext.sml, revision 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.