src/Pure/library.ML
changeset 23826 463903573934
parent 23718 8ff68cb5860c
child 23860 31f5c9e43e57
equal deleted inserted replaced
23825:e0372eba47b7 23826:463903573934
   215   val random: unit -> real
   215   val random: unit -> real
   216   val random_range: int -> int -> int
   216   val random_range: int -> int -> int
   217   val one_of: 'a list -> 'a
   217   val one_of: 'a list -> 'a
   218   val frequency: (int * 'a) list -> 'a
   218   val frequency: (int * 'a) list -> 'a
   219 
   219 
   220   (*current directory*)
       
   221   val cd: string -> unit
       
   222   val pwd: unit -> string
       
   223 
       
   224   (*misc*)
   220   (*misc*)
   225   val divide_and_conquer: ('a -> 'a list * ('b list -> 'b)) -> 'a -> 'b
   221   val divide_and_conquer: ('a -> 'a list * ('b list -> 'b)) -> 'a -> 'b
   226   val partition_eq: ('a * 'a -> bool) -> 'a list -> 'a list list
   222   val partition_eq: ('a * 'a -> bool) -> 'a list -> 'a list list
   227   val partition_list: (int -> 'a -> bool) -> int -> int -> 'a list -> 'a list list
   223   val partition_list: (int -> 'a -> bool) -> int -> int -> 'a list -> 'a list list
   228   val gensym: string -> string
   224   val gensym: string -> string
  1016       if n <= k then x else pick (n - k) xs
  1012       if n <= k then x else pick (n - k) xs
  1017   in pick (random_range 1 sum) xs end;
  1013   in pick (random_range 1 sum) xs end;
  1018 
  1014 
  1019 
  1015 
  1020 
  1016 
  1021 (** current directory **)
       
  1022 
       
  1023 val cd = OS.FileSys.chDir;
       
  1024 val pwd = OS.FileSys.getDir;
       
  1025 
       
  1026 
       
  1027 
       
  1028 (** misc **)
  1017 (** misc **)
  1029 
  1018 
  1030 fun divide_and_conquer decomp x =
  1019 fun divide_and_conquer decomp x =
  1031   let val (ys, recomb) = decomp x
  1020   let val (ys, recomb) = decomp x
  1032   in recomb (map (divide_and_conquer decomp) ys) end;
  1021   in recomb (map (divide_and_conquer decomp) ys) end;