Annotation of researchv10dc/cmd/sml/doc/examples/spread/sheet.sml, revision 1.1.1.1

1.1       root        1: functor Spreadsheet(P : PARSE) : SPREADSHEET =
                      2: struct
                      3: 
                      4:  structure F = P.F
                      5: 
                      6:  fun array2(i,j,v) =  
                      7:     let fun init 0 = nil | init i = array(j,v) :: init(i-1)
                      8:    in arrayoflist(init i)
                      9:   end
                     10:  fun update2(a,i,j,v) = update(a sub i, j, v)
                     11: 
                     12:  val dim = 10
                     13: 
                     14:  val vtable = array2(dim,dim,0)
                     15:  val ftable = array2(dim,dim,F.eval(P.parse "0"))
                     16:  val stable = array2(dim,dim,"0")
                     17: 
                     18:  fun set(i,j,s) = (update2(ftable,i,j, F.eval(P.parse s));
                     19:                   update2(stable,i,j,s))
                     20: 
                     21:  fun for (i,j) f = if i<=j then (f i; for(i+1,j) f) else ()
                     22: 
                     23:  fun eval() = for(0, dim-1)
                     24:                (fn i => for(0, dim-1)
                     25:                            (fn j => update2(vtable,i,j,
                     26:                                             (ftable sub i sub j) vtable)));
                     27: 
                     28:  fun get(i,j) =  (stable sub i sub j, vtable sub i sub j)
                     29: end
                     30: 

unix.superglobalmegacorp.com

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