src/Pure/ML/ml_name_space.ML
author nipkow
Tue, 05 Nov 2019 14:57:41 +0100
changeset 71033 c1b63124245c
parent 68815 6296915dee6e
permissions -rw-r--r--
tuned
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
62508
d0b68218ea55 discontinued RAW session: bootstrap directly from isabelle_process RAW_ML_SYSTEM;
wenzelm
parents: 62504
diff changeset
     1
(*  Title:      Pure/ML/ml_name_space.ML
61715
5dc95d957569 speculative support for polyml-5.6, according to git commit 3527f4ba7b8b;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
5dc95d957569 speculative support for polyml-5.6, according to git commit 3527f4ba7b8b;
wenzelm
parents:
diff changeset
     3
62853
wenzelm
parents: 62851
diff changeset
     4
ML name space, with initial entries for strict Standard ML.
61715
5dc95d957569 speculative support for polyml-5.6, according to git commit 3527f4ba7b8b;
wenzelm
parents:
diff changeset
     5
*)
5dc95d957569 speculative support for polyml-5.6, according to git commit 3527f4ba7b8b;
wenzelm
parents:
diff changeset
     6
62934
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
     7
signature ML_NAME_SPACE =
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
     8
sig
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
     9
  type T
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    10
  val global: T
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    11
  val global_values: (string * string) list -> T
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    12
  val forget_val: string -> unit
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    13
  val forget_type: string -> unit
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    14
  val forget_structure: string -> unit
68815
wenzelm
parents: 62934
diff changeset
    15
  val hidden_structures: string list
62934
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    16
  val bootstrap_values: string list
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    17
  val bootstrap_structures: string list
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    18
  val bootstrap_signatures: string list
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    19
  val sml_val: (string * PolyML.NameSpace.Values.value) list
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    20
  val sml_type: (string * PolyML.NameSpace.TypeConstrs.typeConstr) list
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    21
  val sml_fixity: (string * PolyML.NameSpace.Infixes.fixity) list
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    22
  val sml_structure: (string * PolyML.NameSpace.Structures.structureVal) list
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    23
  val sml_signature: (string * PolyML.NameSpace.Signatures.signatureVal) list
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    24
  val sml_functor: (string * PolyML.NameSpace.Functors.functorVal) list
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    25
end;
62819
d3ff367a16a0 careful export of type-dependent functions, without losing their special status;
wenzelm
parents: 62659
diff changeset
    26
62934
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    27
structure ML_Name_Space: ML_NAME_SPACE =
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    28
struct
61715
5dc95d957569 speculative support for polyml-5.6, according to git commit 3527f4ba7b8b;
wenzelm
parents:
diff changeset
    29
62934
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    30
type T = PolyML.NameSpace.nameSpace;
62839
ea9f12e422c7 clarified SML name space: no access to structure PolyML;
wenzelm
parents: 62819
diff changeset
    31
ea9f12e422c7 clarified SML name space: no access to structure PolyML;
wenzelm
parents: 62819
diff changeset
    32
62934
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    33
(* global *)
62839
ea9f12e422c7 clarified SML name space: no access to structure PolyML;
wenzelm
parents: 62819
diff changeset
    34
62934
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    35
val global = PolyML.globalNameSpace;
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    36
fun global_values values : T =
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    37
 {lookupVal = #lookupVal global,
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    38
  lookupType = #lookupType global,
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    39
  lookupStruct = #lookupStruct global,
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    40
  lookupFix = #lookupFix global,
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    41
  lookupSig = #lookupSig global,
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    42
  lookupFunct = #lookupFunct global,
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    43
  enterVal =
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    44
    fn (x, value) =>
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    45
      (case List.find (fn (y, _) => x = y) values of
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    46
        SOME (_, x') => #enterVal global (x', value)
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    47
      | NONE => ()),
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    48
  enterType = fn _ => (),
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    49
  enterFix = fn _ => (),
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    50
  enterStruct = fn _ => (),
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    51
  enterSig = fn _ => (),
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    52
  enterFunct = fn _ => (),
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    53
  allVal = #allVal global,
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    54
  allType = #allType global,
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    55
  allFix = #allFix global,
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    56
  allStruct = #allStruct global,
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    57
  allSig = #allSig global,
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    58
  allFunct = #allFunct global};
62875
5a0c06491974 clarified bootstrap environment;
wenzelm
parents: 62872
diff changeset
    59
5a0c06491974 clarified bootstrap environment;
wenzelm
parents: 62872
diff changeset
    60
62934
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    61
(* forget entries *)
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    62
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    63
val forget_val = PolyML.Compiler.forgetValue;
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    64
val forget_type = PolyML.Compiler.forgetType;
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    65
val forget_structure = PolyML.Compiler.forgetStructure;
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    66
68815
wenzelm
parents: 62934
diff changeset
    67
val hidden_structures = ["CInterface", "Foreign", "RunCall", "Signal"];
wenzelm
parents: 62934
diff changeset
    68
62934
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    69
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    70
(* bootstrap environment *)
62860
wenzelm
parents: 62853
diff changeset
    71
62934
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    72
val bootstrap_values =
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    73
  ["use", "exit", "ML_file", "ML_system_pretty", "ML_system_pp", "ML_system_overload",
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    74
    "chapter", "section", "subsection", "subsubsection", "paragraph", "subparagraph"];
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    75
val bootstrap_structures =
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    76
  ["Exn", "Output_Primitives", "Basic_Exn", "Thread_Data", "Thread_Position", "ML_Recursive",
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    77
    "Private_Output", "PolyML"] @ hidden_structures;
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    78
val bootstrap_signatures =
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    79
  ["EXN", "OUTPUT_PRIMITIVES", "BASIC_EXN", "THREAD_DATA", "THREAD_POSITION", "ML_RECURSIVE",
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    80
    "PRIVATE_OUTPUT", "ML_NAME_SPACE"];
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    81
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    82
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    83
(* Standard ML environment *)
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    84
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    85
val sml_val =
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    86
  List.filter (fn (a, _) => List.all (fn b => a <> b) bootstrap_values) (#allVal global ());
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    87
val sml_type = #allType global ();
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    88
val sml_fixity = #allFix global ();
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    89
val sml_structure =
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    90
  List.filter (fn (a, _) => List.all (fn b => a <> b) bootstrap_structures) (#allStruct global ());
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    91
val sml_signature =
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    92
  List.filter (fn (a, _) => List.all (fn b => a <> b) bootstrap_signatures) (#allSig global ());
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    93
val sml_functor = #allFunct global ();
6e3fb0aa857a tuned signature;
wenzelm
parents: 62930
diff changeset
    94
61715
5dc95d957569 speculative support for polyml-5.6, according to git commit 3527f4ba7b8b;
wenzelm
parents:
diff changeset
    95
end;