(* ========================================================================= *) (* NAMES *) (* Copyright (c) 2004 Joe Leslie-Hurd, distributed under the BSD License *) (* ========================================================================= *)
structure Name :> Name = struct
open Useful;
(* ------------------------------------------------------------------------- *) (* A type of names. *) (* ------------------------------------------------------------------------- *)
type name = string;
(* ------------------------------------------------------------------------- *) (* A total ordering. *) (* ------------------------------------------------------------------------- *)
fun numName i = mkPrefix prefix (Int.toString i); in fun newName () = numName (newInt ());
fun newNames n = List.map numName (newInts n); end;
fun variantPrime {avoid} = let fun variant n = if avoid n then variant (n ^ "'") else n in
variant end;
local fun isDigitOrPrime c = c = #"'" orelse Char.isDigit c; in fun variantNum {avoid} n = ifnot (avoid n) then n else let val n = stripSuffix isDigitOrPrime n
fun variant i = let val n_i = n ^ Int.toString i in if avoid n_i then variant (i + 1) else n_i end in
variant 0 end; end;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.