Annotation of researchv10no/cmd/sml/src/boot/makemos.sml, revision 1.1.1.1

1.1       root        1: (* Copyright 1989 by AT&T Bell Laboratories *)
                      2: structure MakeMos = 
                      3: struct
                      4: 
                      5: fun makeMos modname = 
                      6:  let type object = System.Unsafe.object
                      7:      val boot : string -> unit ->
                      8:            ((object list -> (object * ByteArray.bytearray array)) * string list)
                      9:          = System.Unsafe.boot
                     10: 
                     11:      val dict = ref ["Core"]
                     12: 
                     13:      fun lookup s = let fun f (s1::r) = s=s1 orelse f r
                     14:                          | f nil = false
                     15:                     in f (!dict)
                     16:                    end
                     17: 
                     18:      fun enter s = dict := s::(!dict)
                     19: 
                     20:      fun readfile s =
                     21:        let val stream = open_in s
                     22:         in input stream (can_input stream) before close_in stream
                     23:        end
                     24: 
                     25:      val f = open_out ("runtime/" ^ modname ^ ".mos")
                     26:      val say = output f
                     27:      fun getstruct s = if lookup s then ()
                     28:                else let val s' = "mo/" ^ s ^ ".mo"
                     29:                         val _ = (say s'; say "\n")
                     30:                        val g = readfile s'
                     31:                        val (_,sl) = boot g ()
                     32:                    in  app getstruct sl;
                     33:                        enter s
                     34:                    end
                     35:   in output std_out (modname ^ ".mos\n");
                     36:      say "mo/CoreFunc.mo\n";
                     37:      app getstruct ["Initial","Loader",modname];
                     38:      close_out f
                     39:  end
                     40: 
                     41: end;(*
                     42: 
                     43: app MakeMos.makeMos ["IntNull","IntVax","CompVax","IntM68","CompM68",
                     44:     "IntSparc","CompSparc","IntNS32","CompNS32"];
                     45:      
                     46: *)

unix.superglobalmegacorp.com

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