src/Pure/ML-Systems/poplogml.ML
author wenzelm
Tue, 04 Oct 2005 21:39:16 +0200
changeset 17760 4191beda8b90
parent 17758 8f443890fab9
child 17798 7daef8964aeb
permissions -rw-r--r--
added compiler and runtime options;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17758
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/ML-Systems/poplogml.ML
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
     2
    ID:         $Id$
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
     3
    Author:     Makarius
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
     4
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
     5
Compatibility file for Poplog/PML (version 15.6/2.1).
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
     6
*)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
     7
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
     8
(** Basis structures **)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
     9
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    10
structure General =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    11
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    12
  exception Subscript = Array.Subscript;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    13
  exception Size;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    14
  exception Fail of string;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    15
  fun exnMessage (exn: exn) = "exception " ^ makestring exn ^ " raised";
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    16
  datatype order = LESS | EQUAL | GREATER;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    17
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    18
open General;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    19
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    20
structure Bool =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    21
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    22
  val toString: bool -> string = makestring;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    23
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    24
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    25
structure Option =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    26
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    27
  open Option;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    28
  exception Option;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    29
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    30
  fun valOf (SOME x) = x
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    31
    | valOf NONE = raise Option;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    32
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    33
  fun getOpt (SOME x, _) = x
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    34
    | getOpt (NONE, x) = x;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    35
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    36
  fun isSome (SOME _) = true
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    37
    | isSome NONE = false;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    38
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    39
open Option;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    40
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    41
structure Option =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    42
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    43
  open Option;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    44
  fun map f (SOME x) = SOME (f x)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    45
    | map _ NONE = NONE;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    46
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    47
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    48
structure Int =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    49
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    50
  open Int;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    51
  type int = int;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    52
  val toString: int -> string = makestring;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    53
  fun fromInt (i: int) = i;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    54
  val fromString = String.stringint;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    55
  fun max (x, y) : int = if x < y then y else x;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    56
  fun min (x, y) : int = if x < y then x else y;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    57
  fun compare (x: int, y) = if x = y then EQUAL else if x < y then LESS else GREATER;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    58
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    59
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    60
structure IntInf = Int;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    61
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    62
structure Real =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    63
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    64
  open Real;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    65
  val toString: real -> string = makestring;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    66
  fun max (x, y) : real = if x < y then y else x;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    67
  fun min (x, y) : real = if x < y then x else y;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    68
  val real = real;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    69
  val floor = floor;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    70
  val realFloor = real o floor;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    71
  fun ceil x = ~1 - floor (~ (x + 1.0));
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    72
  fun round x = floor (x + 0.5);  (*does not do round-to-nearest*)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    73
  fun trunc x = if x < 0.0 then ceil x else floor x;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    74
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    75
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    76
structure String =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    77
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    78
  open String;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    79
  type char = string
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    80
  fun str (c: char) = c: string;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    81
  val translate = mapstring;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    82
  val isPrefix = isprefix;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    83
  val isSuffix = issuffix;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    84
  val size = size;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    85
  fun compare (x: string, y) = if x = y then EQUAL else if x < y then LESS else GREATER;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    86
  fun substring (s, i, n) = String.substring i (i + n) s
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    87
    handle String.Substring => raise Subscript;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    88
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    89
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    90
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    91
exception Empty;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    92
fun null [] = true | null _ = false;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    93
fun hd (x :: _) = x | hd _ = raise Empty;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    94
fun tl (_ :: xs) = xs | tl _ = raise Empty;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    95
val app = List.app;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    96
val length = List.length;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    97
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    98
fun foldl f b [] = b
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
    99
  | foldl f b (x :: xs) = foldl f (f (x, b)) xs;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   100
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   101
fun foldr f b [] = b
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   102
  | foldr f b (x :: xs) = f (x, foldr f b xs);
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   103
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   104
structure List =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   105
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   106
  open List;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   107
  val null = null;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   108
  val hd = hd;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   109
  val tl = tl;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   110
  val map = map;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   111
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   112
  fun last []      = raise Empty
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   113
    | last [x]     = x
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   114
    | last (x::xs) = last xs;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   115
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   116
  fun nth (xs, n) =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   117
      let fun h []      _ = raise Subscript
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   118
            | h (x::xs) n = if n=0 then x else h xs (n-1)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   119
      in if n<0 then raise Subscript else h xs n end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   120
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   121
  fun drop (xs, n) =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   122
      let fun h xs      0 = xs
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   123
            | h []      n = raise Subscript
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   124
            | h (x::xs) n = h xs (n-1)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   125
      in if n<0 then raise Subscript else h xs n end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   126
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   127
  fun take (xs, n) =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   128
      let fun h xs      0 = []
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   129
            | h []      n = raise Subscript
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   130
            | h (x::xs) n = x :: h xs (n-1)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   131
      in if n<0 then raise Subscript else h xs n end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   132
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   133
  fun concat []      = []
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   134
    | concat (l::ls) = l @ concat ls;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   135
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   136
  fun mapPartial f []      = []
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   137
    | mapPartial f (x::xs) =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   138
         (case f x of NONE   => mapPartial f xs
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   139
                    | SOME y => y :: mapPartial f xs);
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   140
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   141
  fun find _ []        = NONE
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   142
    | find p (x :: xs) = if p x then SOME x else find p xs;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   143
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   144
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   145
  (*copy the list preserving elements that satisfy the predicate*)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   146
  fun filter p [] = []
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   147
    | filter p (x :: xs) = if p x then x :: filter p xs else filter p xs;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   148
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   149
  (*Partition list into elements that satisfy predicate and those that don't.
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   150
    Preserves order of elements in both lists.*)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   151
  fun partition (p: 'a->bool) (ys: 'a list) : ('a list * 'a list) =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   152
      let fun part ([], answer) = answer
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   153
            | part (x::xs, (ys, ns)) = if p(x)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   154
              then  part (xs, (x::ys, ns))
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   155
              else  part (xs, (ys, x::ns))
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   156
      in  part (rev ys, ([], []))  end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   157
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   158
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   159
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   160
structure ListPair =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   161
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   162
  fun zip ([], [])      = []
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   163
    | zip (x::xs,y::ys) = (x,y) :: zip(xs,ys);
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   164
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   165
  fun unzip [] = ([],[])
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   166
    | unzip((x,y)::pairs) =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   167
          let val (xs,ys) = unzip pairs
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   168
          in  (x::xs, y::ys)  end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   169
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   170
  fun app f (x::xs, y::ys) = (f (x, y); app f (xs, ys))
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   171
    | app f _ = ();
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   172
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   173
  fun map f ([], [])      = []
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   174
    | map f (x::xs,y::ys) = f(x,y) :: map f (xs,ys);
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   175
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   176
  fun exists p =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   177
    let fun boolf ([], [])      = false
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   178
          | boolf (x::xs,y::ys) = p(x,y) orelse boolf (xs,ys)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   179
    in boolf end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   180
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   181
  fun all p =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   182
    let fun boolf ([], [])      = true
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   183
          | boolf (x::xs,y::ys) = p(x,y) andalso boolf (xs,ys)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   184
    in boolf end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   185
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   186
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   187
structure TextIO =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   188
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   189
  type instream = instream;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   190
  type outstream = outstream;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   191
  exception Io = Io;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   192
  val stdIn = std_in;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   193
  val stdOut = std_out;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   194
  val stdErr = std_err;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   195
  val openIn = open_in;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   196
  val openAppend = open_append;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   197
  val openOut = open_out;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   198
  val closeIn = close_in;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   199
  val closeOut = close_out;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   200
  val inputN = input;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   201
  val inputAll = fn is => inputN (is, 1000000000);
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   202
  val inputLine = input_line;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   203
  val endOfStream = end_of_stream;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   204
  val output = output;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   205
  val flushOut = flush_out;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   206
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   207
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   208
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   209
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   210
(** Compiler-independent timing functions **)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   211
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   212
fun startTiming() = "FIXME";
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   213
fun endTiming (s: string) = s;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   214
fun checkTimer _ = (0, 0, 0);
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   215
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   216
structure Timer =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   217
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   218
  type cpu_timer = int;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   219
  fun startCPUTimer () = 0;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   220
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   221
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   222
structure Time =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   223
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   224
  exception Time;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   225
  type time = int;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   226
  val toString: time -> string = makestring;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   227
  val zeroTime = 0;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   228
  fun now () = 0;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   229
  fun (x: int) + y = x + y;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   230
  fun (x: int) - y = x - y;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   231
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   232
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   233
17760
4191beda8b90 added compiler and runtime options;
wenzelm
parents: 17758
diff changeset
   234
(* Compiler and runtime options *)
4191beda8b90 added compiler and runtime options;
wenzelm
parents: 17758
diff changeset
   235
4191beda8b90 added compiler and runtime options;
wenzelm
parents: 17758
diff changeset
   236
val _ = Compile.filetype := ".ML";
4191beda8b90 added compiler and runtime options;
wenzelm
parents: 17758
diff changeset
   237
val _ = Memory.hilim := 5 * 1024 * 1024;
4191beda8b90 added compiler and runtime options;
wenzelm
parents: 17758
diff changeset
   238
4191beda8b90 added compiler and runtime options;
wenzelm
parents: 17758
diff changeset
   239
fun pointer_eq (_: 'a, _: 'a) = false;
4191beda8b90 added compiler and runtime options;
wenzelm
parents: 17758
diff changeset
   240
4191beda8b90 added compiler and runtime options;
wenzelm
parents: 17758
diff changeset
   241
17758
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   242
(* ML toplevel *)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   243
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   244
fun ml_prompts p1 p2 = ();
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   245
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   246
fun make_pp path pprint = ();
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   247
fun install_pp _ = ();
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   248
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   249
fun print_depth _ = ();
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   250
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   251
fun exception_trace f = f ();
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   252
fun profile (n: int) f x = f x;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   253
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   254
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   255
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   256
(** interrupts **)      (*Note: may get into race conditions*)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   257
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   258
fun ignore_interrupt f x = f x;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   259
fun raise_interrupt f x = f x;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   260
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   261
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   262
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   263
(** OS related **)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   264
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   265
val tmp_name =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   266
  let val count = ref 0 in
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   267
    fn () => (count := ! count + 1;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   268
      "/tmp/pml" ^ Int.toString (OS.pid ()) ^ "." ^ Int.toString (! count))
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   269
  end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   270
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   271
local
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   272
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   273
fun shell cmdline = OS.execve "/bin/sh" ["sh", "-c", cmdline] (OS.envlist());
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   274
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   275
fun execute_rc cmdline =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   276
  let
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   277
    fun wait pid =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   278
      (case OS.wait () of
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   279
        NONE => wait pid
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   280
      | SOME (pid', rc) =>
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   281
          if pid = pid' then rc div 256 else raise OS.Error ("wait", "wrong pid", ""));
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   282
  in
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   283
    (case OS.fork () of
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   284
      NONE => shell cmdline
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   285
    | SOME pid => wait pid)
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   286
  end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   287
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   288
fun squote s = "'" ^ s ^ "'";
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   289
fun remove name = (execute_rc ("/bin/rm -- " ^ squote name); ());
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   290
fun is_dir name = execute_rc ("test -d " ^ squote name) = 0;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   291
fun is_present name = execute_rc ("test -e " ^ squote name) = 0;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   292
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   293
fun execute_result cmdline =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   294
  let
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   295
    val tmp = tmp_name ();
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   296
    val rc = execute_rc (cmdline  ^ " > " ^ tmp);
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   297
    val instream = TextIO.openIn tmp;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   298
    val result = TextIO.inputAll instream;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   299
    val _ = TextIO.closeIn instream;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   300
    val _ = remove tmp;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   301
  in (rc, result) end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   302
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   303
fun int_of_string s =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   304
  Int.fromString (if String.isSuffix "\n" s then String.substring (s, 0, size s - 1) else s);
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   305
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   306
in
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   307
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   308
fun exit rc = shell ("exit " ^ Int.toString rc);
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   309
fun quit () = exit 0;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   310
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   311
fun execute cmdline = #2 (execute_result cmdline);
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   312
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   313
fun system cmdline =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   314
  let val (rc, result) = execute_result cmdline
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   315
  in TextIO.output (TextIO.stdOut, result); TextIO.flushOut TextIO.stdOut; rc end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   316
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   317
fun getenv var = (case OS.translate var of NONE => "" | SOME s => s);
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   318
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   319
structure OS =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   320
struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   321
  structure FileSys =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   322
  struct
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   323
    val tmpName = tmp_name;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   324
    val chDir = OS.cd;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   325
    val getDir = OS.pwd;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   326
    val remove = remove;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   327
    val isDir = is_dir;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   328
    val compare = Int.compare;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   329
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   330
    fun modTime name =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   331
      if is_present name then int_of_string (execute ("stat -c '%Y' " ^ squote name))
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   332
      else raise TextIO.Io "OS.FileSys.modTime";
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   333
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   334
    fun fileId name =
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   335
      if is_present name then int_of_string (execute ("stat -c '%i' " ^ squote name))
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   336
      else raise TextIO.Io "OS.FileSys.fileId";
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   337
  end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   338
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   339
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   340
end;
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   341
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   342
8f443890fab9 Compatibility file for Poplog/PML (version 15.6/2.1).
wenzelm
parents:
diff changeset
   343
fun use_text (print, err) verbose txt = raise Fail ("FIXME use_text: " ^ txt);