src/Pure/ML-Systems/alice.ML
author wenzelm
Sun, 06 May 2007 18:07:06 +0200
changeset 22837 82cceaf768c8
parent 22576 1beba4e2aa9f
child 23139 aa899bce7c3b
permissions -rw-r--r--
updated Alice version;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22563
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/ML-Systems/alice.ML
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
     2
    ID:         $Id$
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
     3
22837
82cceaf768c8 updated Alice version;
wenzelm
parents: 22576
diff changeset
     4
Compatibility file for Alice 1.4.
22563
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
     5
*)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
     6
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
     7
fun exit 0 = (OS.Process.exit OS.Process.success): unit
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
     8
  | exit _ = OS.Process.exit OS.Process.failure;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
     9
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    10
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    11
(** ML system related **)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    12
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    13
(*low-level pointer equality*)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    14
fun pointer_eq (_: 'a, _: 'a) = false;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    15
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    16
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    17
(* restore old-style character / string functions *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    18
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    19
exception Ord;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    20
fun ord "" = raise Ord
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    21
  | ord s = Char.ord (String.sub (s, 0));
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    22
22575
2ed8a11f3172 fixed chr/explode;
wenzelm
parents: 22563
diff changeset
    23
val chr = String.str o chr;
2ed8a11f3172 fixed chr/explode;
wenzelm
parents: 22563
diff changeset
    24
val explode = map String.str o String.explode;
22563
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    25
val implode = String.concat;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    26
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    27
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    28
(* Poly/ML emulation *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    29
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    30
fun quit () = exit 0;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    31
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    32
fun print_depth n = Print.depth := n;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    33
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    34
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    35
(* compiler-independent timing functions *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    36
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    37
structure Timer =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    38
struct
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    39
  open Timer;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    40
  type cpu_timer = unit;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    41
  fun startCPUTimer () = ();
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    42
  fun checkCPUTimer () = {sys = Time.zeroTime, usr = Time.zeroTime};
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    43
  fun checkGCTime () = Time.zeroTime;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    44
end;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    45
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    46
fun start_timing () =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    47
  let val CPUtimer = Timer.startCPUTimer();
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    48
      val time = Timer.checkCPUTimer(CPUtimer)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    49
  in  (CPUtimer,time)  end;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    50
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    51
fun end_timing (CPUtimer, {sys,usr}) =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    52
  let open Time  (*...for Time.toString, Time.+ and Time.- *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    53
      val {sys=sys2,usr=usr2} = Timer.checkCPUTimer(CPUtimer)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    54
  in  "User " ^ toString (usr2-usr) ^
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    55
      "  All "^ toString (sys2-sys + usr2-usr) ^
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    56
      " secs"
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    57
      handle Time => ""
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    58
  end;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    59
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    60
fun check_timer timer =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    61
  let
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    62
    val {sys, usr} = Timer.checkCPUTimer timer;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    63
    val gc = Timer.checkGCTime timer;    (* FIXME already included in usr? *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    64
  in (sys, usr, gc) end;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    65
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    66
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    67
(*prompts*)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    68
fun ml_prompts p1 p2 = ();
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    69
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    70
(*dummy implementation*)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    71
fun profile (n: int) f x = f x;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    72
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    73
(*dummy implementation*)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    74
fun exception_trace f = f ();
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    75
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    76
(*dummy implementation*)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    77
fun print x = x;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    78
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    79
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    80
(* toplevel pretty printing (see also Pure/install_pp.ML) *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    81
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    82
fun make_pp path pprint = (path, pprint);
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    83
fun install_pp (path, pp) = ();
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    84
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    85
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    86
(* ML command execution *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    87
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    88
fun use_text name (print, err) verbose txt = (Compiler.eval txt; ());
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    89
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    90
fun use_file _ _ name = use name;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    91
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    92
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    93
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    94
(** interrupts **)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    95
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    96
exception Interrupt;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    97
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    98
fun ignore_interrupt f x = f x;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
    99
fun raise_interrupt f x = f x;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   100
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   101
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   102
(* basis library fixes *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   103
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   104
structure TextIO =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   105
struct
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   106
  open TextIO;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   107
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   108
  fun inputLine is =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   109
    (case TextIO.inputLine is of
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   110
      SOME str => str
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   111
    | NONE => "")
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   112
    handle IO.Io _ => raise Interrupt;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   113
end;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   114
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   115
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   116
(* bounded time execution *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   117
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   118
(*dummy implementation*)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   119
fun interrupt_timeout time f x =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   120
  f x;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   121
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   122
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   123
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   124
(** OS related **)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   125
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   126
(* system command execution *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   127
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   128
(*execute Unix command which doesn't take any input from stdin and
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   129
  sends its output to stdout; could be done more easily by Unix.execute,
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   130
  but that function doesn't use the PATH*)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   131
fun execute command =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   132
  let
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   133
    val tmp_name = OS.FileSys.tmpName ();
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   134
    val is = (OS.Process.system (command ^ " > " ^ tmp_name); TextIO.openIn tmp_name);
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   135
    val result = TextIO.inputAll is;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   136
  in
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   137
    TextIO.closeIn is;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   138
    OS.FileSys.remove tmp_name;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   139
    result
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   140
  end;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   141
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   142
(*plain version; with return code*)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   143
val system = OS.Process.system: string -> int;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   144
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   145
structure OS =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   146
struct
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   147
  open OS;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   148
  structure FileSys =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   149
  struct
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   150
    fun fileId name =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   151
      (case execute ("perl -e '@_ = stat(q:" ^ name ^ ":); print $_[1]'") of
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   152
        "" => raise Fail "OS.FileSys.fileId"   (* FIXME IO.Io!? *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   153
      | s => (case Int.fromString s of NONE => raise Fail "OS.FileSys.fileId" | SOME i => i));
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   154
    val compare = Int.compare;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   155
    open FileSys;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   156
  end;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   157
end;
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   158
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   159
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   160
(* getenv *)
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   161
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   162
fun getenv var =
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   163
  (case OS.Process.getEnv var of
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   164
    NONE => ""
78fb2af1a5c3 Compatibility file for Alice 1.3 -- experimental!
wenzelm
parents:
diff changeset
   165
  | SOME txt => txt);