src/Pure/General/binding.ML
changeset 35200 aaddb2b526d6
parent 33157 56f836b9414f
child 39442 73bcb12fdc69
equal deleted inserted replaced
35199:2e37cdae7b9c 35200:aaddb2b526d6
    20   val suffix_name: string -> binding -> binding
    20   val suffix_name: string -> binding -> binding
    21   val eq_name: binding * binding -> bool
    21   val eq_name: binding * binding -> bool
    22   val empty: binding
    22   val empty: binding
    23   val is_empty: binding -> bool
    23   val is_empty: binding -> bool
    24   val qualify: bool -> string -> binding -> binding
    24   val qualify: bool -> string -> binding -> binding
       
    25   val qualified: bool -> string -> binding -> binding
    25   val qualified_name: string -> binding
    26   val qualified_name: string -> binding
    26   val qualified_name_of: binding -> string
    27   val qualified_name_of: binding -> string
    27   val prefix_of: binding -> (string * bool) list
    28   val prefix_of: binding -> (string * bool) list
    28   val map_prefix: ((string * bool) list -> (string * bool) list) -> binding -> binding
    29   val map_prefix: ((string * bool) list -> (string * bool) list) -> binding -> binding
    29   val prefix: bool -> string -> binding -> binding
    30   val prefix: bool -> string -> binding -> binding
    85 fun qualify _ "" = I
    86 fun qualify _ "" = I
    86   | qualify mandatory qual =
    87   | qualify mandatory qual =
    87       map_binding (fn (conceal, prefix, qualifier, name, pos) =>
    88       map_binding (fn (conceal, prefix, qualifier, name, pos) =>
    88         (conceal, prefix, (qual, mandatory) :: qualifier, name, pos));
    89         (conceal, prefix, (qual, mandatory) :: qualifier, name, pos));
    89 
    90 
       
    91 fun qualified mandatory name' = map_binding (fn (conceal, prefix, qualifier, name, pos) =>
       
    92   let val qualifier' = if name = "" then qualifier else qualifier @ [(name, mandatory)]
       
    93   in (conceal, prefix, qualifier', name', pos) end);
       
    94 
    90 fun qualified_name "" = empty
    95 fun qualified_name "" = empty
    91   | qualified_name s =
    96   | qualified_name s =
    92       let val (qualifier, name) = split_last (Long_Name.explode s)
    97       let val (qualifier, name) = split_last (Long_Name.explode s)
    93       in make_binding (false, [], map (rpair false) qualifier, name, Position.none) end;
    98       in make_binding (false, [], map (rpair false) qualifier, name, Position.none) end;
    94 
    99