Hello community, here is the log from the commit of package ocaml-stdlib-shims for openSUSE:Factory checked in at 2019-11-11 21:30:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ocaml-stdlib-shims (Old) and /work/SRC/openSUSE:Factory/.ocaml-stdlib-shims.new.2990 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ocaml-stdlib-shims" Mon Nov 11 21:30:26 2019 rev:2 rq:746714 version:0.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/ocaml-stdlib-shims/ocaml-stdlib-shims.changes 2019-10-11 15:15:53.236339440 +0200 +++ /work/SRC/openSUSE:Factory/.ocaml-stdlib-shims.new.2990/ocaml-stdlib-shims.changes 2019-11-11 21:30:27.868180076 +0100 @@ -1,0 +2,5 @@ +Fri Nov 1 12:34:56 UTC 2019 - [email protected] + +- Require current dune macros + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ocaml-stdlib-shims.spec ++++++ --- /var/tmp/diff_new_pack.SvHxbi/_old 2019-11-11 21:30:29.024181305 +0100 +++ /var/tmp/diff_new_pack.SvHxbi/_new 2019-11-11 21:30:29.040181321 +0100 @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -27,7 +27,7 @@ Source: %{name}-%{version}.tar.xz BuildRequires: ocaml BuildRequires: ocaml-dune -BuildRequires: ocaml-rpm-macros >= 20191004 +BuildRequires: ocaml-rpm-macros >= 20191101 %description Compiling against this library allows replacing uses of Pervasives @@ -48,6 +48,7 @@ %autosetup -p1 %build +dune_release_pkgs='stdlib-shims' %ocaml_dune_setup %ocaml_dune_build @@ -56,7 +57,7 @@ %ocaml_create_file_list %check -%ocaml_dune_test || : make check failed +%ocaml_dune_test %files -f %{name}.files ++++++ ocaml-stdlib-shims-0.1.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-stdlib-shims-0.1.0/CHANGES.md new/ocaml-stdlib-shims-0.1.0/CHANGES.md --- old/ocaml-stdlib-shims-0.1.0/CHANGES.md 2019-09-23 15:11:38.000000000 +0200 +++ new/ocaml-stdlib-shims-0.1.0/CHANGES.md 2019-10-09 12:21:12.000000000 +0200 @@ -1,3 +1,8 @@ +0.2.0 2019-10-08 London +----------------------- + +- Fix compilation with OCaml >= 4.07 under msvc (@dra27, #12, fixes #11) + 0.1.0 2019-02-19 London ----------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-stdlib-shims-0.1.0/src/dune new/ocaml-stdlib-shims-0.1.0/src/dune --- old/ocaml-stdlib-shims-0.1.0/src/dune 2019-09-23 15:11:38.000000000 +0200 +++ new/ocaml-stdlib-shims-0.1.0/src/dune 2019-10-09 12:21:12.000000000 +0200 @@ -50,33 +50,34 @@ ; "Weak" ] -let modules_post_4_02 = - [ "Float", (4, 07) - ; "Seq", (4, 07) - ; "Stdlib", (4, 07) - ; "Uchar", (4, 03) - ] - let missing_modules = - List.filter modules_post_4_02 ~f:(fun (_, v) -> version < v) - |> List.map ~f:fst - -let all_modules_except_stdlib = - (modules_in_4_02 @ List.map modules_post_4_02 ~f:fst) - |> List.filter ~f:((<>) "Stdlib") - |> List.sort ~cmp:String.compare + if version < (4, 07) then + ["Stdlib"] + else if version < (4, 10) then + (* For OCaml 4.07-4.09 incl. this solves the problem of being unable to + generate empty .cmxa files on MSVC by duplicating the Pervasives module + (and updating its deprecation warning not to refer to this library! *) + ["Pervasives"] + else + [] + +let available_modules = + if version > (4, 02) then + "Uchar" :: modules_in_4_02 + else + modules_in_4_02 let longest_module_name = - List.fold_left all_modules_except_stdlib ~init:0 + List.fold_left available_modules ~init:0 ~f:(fun acc m -> max acc (String.length m)) let () = Printf.ksprintf send {| (library - (wrapped false) - (name stdlib_shims) - (public_name stdlib-shims) - (modules %s)) + (wrapped false) + (name stdlib_shims) + (modules %s) + (public_name stdlib-shims)) (rule (with-stdout-to stdlib.ml @@ -85,7 +86,8 @@ include Pervasives "))) -|} (String.concat ~sep:" " missing_modules) - (List.map all_modules_except_stdlib +|} + (String.concat ~sep:" " missing_modules) + (List.map available_modules ~f:(fun m -> Printf.sprintf "module %-*s = %s" longest_module_name m m) |> String.concat ~sep:"\n") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-stdlib-shims-0.1.0/src/float.ml new/ocaml-stdlib-shims-0.1.0/src/float.ml --- old/ocaml-stdlib-shims-0.1.0/src/float.ml 2019-09-23 15:11:38.000000000 +0200 +++ new/ocaml-stdlib-shims-0.1.0/src/float.ml 1970-01-01 01:00:00.000000000 +0100 @@ -1,105 +0,0 @@ -(**************************************************************************) -(* *) -(* OCaml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* Nicolas Ojeda Bar, LexiFi *) -(* *) -(* Copyright 2018 Institut National de Recherche en Informatique et *) -(* en Automatique. *) -(* *) -(* All rights reserved. This file is distributed under the terms of *) -(* the GNU Lesser General Public License version 2.1, with the *) -(* special exception on linking described in the file LICENSE. *) -(* *) -(**************************************************************************) - -external neg : float -> float = "%negfloat" -external add : float -> float -> float = "%addfloat" -external sub : float -> float -> float = "%subfloat" -external mul : float -> float -> float = "%mulfloat" -external div : float -> float -> float = "%divfloat" -external rem : float -> float -> float = "caml_fmod_float" "fmod" - [@@unboxed] [@@noalloc] -external abs : float -> float = "%absfloat" -let infinity = Pervasives.infinity -let neg_infinity = Pervasives.neg_infinity -let nan = Pervasives.nan -let pi = 0x1.921fb54442d18p+1 -let max_float = Pervasives.max_float -let min_float = Pervasives.min_float -let epsilon = Pervasives.epsilon_float -external of_int : int -> float = "%floatofint" -external to_int : float -> int = "%intoffloat" -external of_string : string -> float = "caml_float_of_string" -let of_string_opt s = try Some (float_of_string s) with -| Failure _ -> None - -let to_string = Pervasives.string_of_float -type fpclass = Pervasives.fpclass = - FP_normal - | FP_subnormal - | FP_zero - | FP_infinite - | FP_nan -external classify_float : (float [@unboxed]) -> fpclass = - "caml_classify_float" "caml_classify_float_unboxed" [@@noalloc] -external pow : float -> float -> float = "caml_power_float" "pow" - [@@unboxed] [@@noalloc] -external sqrt : float -> float = "caml_sqrt_float" "sqrt" - [@@unboxed] [@@noalloc] -external exp : float -> float = "caml_exp_float" "exp" [@@unboxed] [@@noalloc] -external log : float -> float = "caml_log_float" "log" [@@unboxed] [@@noalloc] -external log10 : float -> float = "caml_log10_float" "log10" - [@@unboxed] [@@noalloc] -external expm1 : float -> float = "caml_expm1_float" "caml_expm1" - [@@unboxed] [@@noalloc] -external log1p : float -> float = "caml_log1p_float" "caml_log1p" - [@@unboxed] [@@noalloc] -external cos : float -> float = "caml_cos_float" "cos" [@@unboxed] [@@noalloc] -external sin : float -> float = "caml_sin_float" "sin" [@@unboxed] [@@noalloc] -external tan : float -> float = "caml_tan_float" "tan" [@@unboxed] [@@noalloc] -external acos : float -> float = "caml_acos_float" "acos" - [@@unboxed] [@@noalloc] -external asin : float -> float = "caml_asin_float" "asin" - [@@unboxed] [@@noalloc] -external atan : float -> float = "caml_atan_float" "atan" - [@@unboxed] [@@noalloc] -external atan2 : float -> float -> float = "caml_atan2_float" "atan2" - [@@unboxed] [@@noalloc] -external hypot : float -> float -> float - = "caml_hypot_float" "caml_hypot" [@@unboxed] [@@noalloc] -external cosh : float -> float = "caml_cosh_float" "cosh" - [@@unboxed] [@@noalloc] -external sinh : float -> float = "caml_sinh_float" "sinh" - [@@unboxed] [@@noalloc] -external tanh : float -> float = "caml_tanh_float" "tanh" - [@@unboxed] [@@noalloc] -external ceil : float -> float = "caml_ceil_float" "ceil" - [@@unboxed] [@@noalloc] -external floor : float -> float = "caml_floor_float" "floor" -[@@unboxed] [@@noalloc] -external copysign : float -> float -> float - = "caml_copysign_float" "caml_copysign" - [@@unboxed] [@@noalloc] -external frexp : float -> float * int = "caml_frexp_float" -external ldexp : (float [@unboxed]) -> (int [@untagged]) -> (float [@unboxed]) = - "caml_ldexp_float" "caml_ldexp_float_unboxed" [@@noalloc] -external modf : float -> float * float = "caml_modf_float" -type t = float -external compare : float -> float -> int = "%compare" -let equal x y = compare x y = 0 -external seeded_hash_param : int -> int -> int -> float -> int - = "caml_hash" [@@noalloc] -let hash x = seeded_hash_param 10 100 0 x - -module Array = struct - type t = float array - - let create : int -> t = fun len -> Array.make len 0.0 - let length : t -> int = Array.length - let get : t -> int -> float = Array.get - let set : t -> int -> float -> unit = Array.set - let unsafe_get : t -> int -> float = Array.unsafe_get - let unsafe_set : t -> int -> float -> unit = Array.unsafe_set -end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-stdlib-shims-0.1.0/src/float.mli new/ocaml-stdlib-shims-0.1.0/src/float.mli --- old/ocaml-stdlib-shims-0.1.0/src/float.mli 2019-09-23 15:11:38.000000000 +0200 +++ new/ocaml-stdlib-shims-0.1.0/src/float.mli 1970-01-01 01:00:00.000000000 +0100 @@ -1,267 +0,0 @@ -(**************************************************************************) -(* *) -(* OCaml *) -(* *) -(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) -(* Nicolas Ojeda Bar, LexiFi *) -(* *) -(* Copyright 2018 Institut National de Recherche en Informatique et *) -(* en Automatique. *) -(* *) -(* All rights reserved. This file is distributed under the terms of *) -(* the GNU Lesser General Public License version 2.1, with the *) -(* special exception on linking described in the file LICENSE. *) -(* *) -(**************************************************************************) - -(** {1 Floating-point arithmetic} - - OCaml's floating-point numbers follow the - IEEE 754 standard, using double precision (64 bits) numbers. - Floating-point operations never raise an exception on overflow, - underflow, division by zero, etc. Instead, special IEEE numbers - are returned as appropriate, such as [infinity] for [1.0 /. 0.0], - [neg_infinity] for [-1.0 /. 0.0], and [nan] ('not a number') - for [0.0 /. 0.0]. These special numbers then propagate through - floating-point computations as expected: for instance, - [1.0 /. infinity] is [0.0], and any arithmetic operation with [nan] - as argument returns [nan] as result. - - @since 4.07.0 -*) - -external neg : float -> float = "%negfloat" -(** Unary negation. *) - -external add : float -> float -> float = "%addfloat" -(** Floating-point addition. *) - -external sub : float -> float -> float = "%subfloat" -(** Floating-point subtraction. *) - -external mul : float -> float -> float = "%mulfloat" -(** Floating-point multiplication. *) - -external div : float -> float -> float = "%divfloat" -(** Floating-point division. *) - -external rem : float -> float -> float = "caml_fmod_float" "fmod" -[@@unboxed] [@@noalloc] -(** [rem a b] returns the remainder of [a] with respect to [b]. The returned - value is [a -. n *. b], where [n] is the quotient [a /. b] rounded towards - zero to an integer. *) - -external abs : float -> float = "%absfloat" -(** [abs f] returns the absolute value of [f]. *) - -val infinity : float -(** Positive infinity. *) - -val neg_infinity : float -(** Negative infinity. *) - -val nan : float -(** A special floating-point value denoting the result of an - undefined operation such as [0.0 /. 0.0]. Stands for - 'not a number'. Any floating-point operation with [nan] as - argument returns [nan] as result. As for floating-point comparisons, - [=], [<], [<=], [>] and [>=] return [false] and [<>] returns [true] - if one or both of their arguments is [nan]. *) - -val pi : float -(** The constant pi. *) - -val max_float : float -(** The largest positive finite value of type [float]. *) - -val min_float : float -(** The smallest positive, non-zero, non-denormalized value of type [float]. *) - -val epsilon : float -(** The difference between [1.0] and the smallest exactly representable - floating-point number greater than [1.0]. *) - -external of_int : int -> float = "%floatofint" -(** Convert an integer to floating-point. *) - -external to_int : float -> int = "%intoffloat" -(** Truncate the given floating-point number to an integer. - The result is unspecified if the argument is [nan] or falls outside the - range of representable integers. *) - -external of_string : string -> float = "caml_float_of_string" -(** Convert the given string to a float. The string is read in decimal - (by default) or in hexadecimal (marked by [0x] or [0X]). - The format of decimal floating-point numbers is - [ [-] dd.ddd (e|E) [+|-] dd ], where [d] stands for a decimal digit. - The format of hexadecimal floating-point numbers is - [ [-] 0(x|X) hh.hhh (p|P) [+|-] dd ], where [h] stands for an - hexadecimal digit and [d] for a decimal digit. - In both cases, at least one of the integer and fractional parts must be - given; the exponent part is optional. - The [_] (underscore) character can appear anywhere in the string - and is ignored. - Depending on the execution platforms, other representations of - floating-point numbers can be accepted, but should not be relied upon. - Raise [Failure "float_of_string"] if the given string is not a valid - representation of a float. *) - -val of_string_opt: string -> float option -(** Same as [of_string], but returns [None] instead of raising. *) - -val to_string : float -> string -(** Return the string representation of a floating-point number. *) - -type fpclass = Pervasives.fpclass = - FP_normal (** Normal number, none of the below *) - | FP_subnormal (** Number very close to 0.0, has reduced precision *) - | FP_zero (** Number is 0.0 or -0.0 *) - | FP_infinite (** Number is positive or negative infinity *) - | FP_nan (** Not a number: result of an undefined operation *) -(** The five classes of floating-point numbers, as determined by - the {!classify_float} function. *) - -external classify_float : (float [@unboxed]) -> fpclass = - "caml_classify_float" "caml_classify_float_unboxed" [@@noalloc] -(** Return the class of the given floating-point number: - normal, subnormal, zero, infinite, or not a number. *) - -external pow : float -> float -> float = "caml_power_float" "pow" -[@@unboxed] [@@noalloc] -(** Exponentiation. *) - -external sqrt : float -> float = "caml_sqrt_float" "sqrt" -[@@unboxed] [@@noalloc] -(** Square root. *) - -external exp : float -> float = "caml_exp_float" "exp" [@@unboxed] [@@noalloc] -(** Exponential. *) - -external log : float -> float = "caml_log_float" "log" [@@unboxed] [@@noalloc] -(** Natural logarithm. *) - -external log10 : float -> float = "caml_log10_float" "log10" -[@@unboxed] [@@noalloc] -(** Base 10 logarithm. *) - -external expm1 : float -> float = "caml_expm1_float" "caml_expm1" -[@@unboxed] [@@noalloc] -(** [expm1 x] computes [exp x -. 1.0], giving numerically-accurate results - even if [x] is close to [0.0]. *) - -external log1p : float -> float = "caml_log1p_float" "caml_log1p" -[@@unboxed] [@@noalloc] -(** [log1p x] computes [log(1.0 +. x)] (natural logarithm), - giving numerically-accurate results even if [x] is close to [0.0]. *) - -external cos : float -> float = "caml_cos_float" "cos" [@@unboxed] [@@noalloc] -(** Cosine. Argument is in radians. *) - -external sin : float -> float = "caml_sin_float" "sin" [@@unboxed] [@@noalloc] -(** Sine. Argument is in radians. *) - -external tan : float -> float = "caml_tan_float" "tan" [@@unboxed] [@@noalloc] -(** Tangent. Argument is in radians. *) - -external acos : float -> float = "caml_acos_float" "acos" -[@@unboxed] [@@noalloc] -(** Arc cosine. The argument must fall within the range [[-1.0, 1.0]]. - Result is in radians and is between [0.0] and [pi]. *) - -external asin : float -> float = "caml_asin_float" "asin" -[@@unboxed] [@@noalloc] -(** Arc sine. The argument must fall within the range [[-1.0, 1.0]]. - Result is in radians and is between [-pi/2] and [pi/2]. *) - -external atan : float -> float = "caml_atan_float" "atan" -[@@unboxed] [@@noalloc] -(** Arc tangent. - Result is in radians and is between [-pi/2] and [pi/2]. *) - -external atan2 : float -> float -> float = "caml_atan2_float" "atan2" -[@@unboxed] [@@noalloc] -(** [atan2 y x] returns the arc tangent of [y /. x]. The signs of [x] - and [y] are used to determine the quadrant of the result. - Result is in radians and is between [-pi] and [pi]. *) - -external hypot : float -> float -> float = "caml_hypot_float" "caml_hypot" -[@@unboxed] [@@noalloc] -(** [hypot x y] returns [sqrt(x *. x + y *. y)], that is, the length - of the hypotenuse of a right-angled triangle with sides of length - [x] and [y], or, equivalently, the distance of the point [(x,y)] - to origin. If one of [x] or [y] is infinite, returns [infinity] - even if the other is [nan]. *) - -external cosh : float -> float = "caml_cosh_float" "cosh" -[@@unboxed] [@@noalloc] -(** Hyperbolic cosine. Argument is in radians. *) - -external sinh : float -> float = "caml_sinh_float" "sinh" -[@@unboxed] [@@noalloc] -(** Hyperbolic sine. Argument is in radians. *) - -external tanh : float -> float = "caml_tanh_float" "tanh" -[@@unboxed] [@@noalloc] -(** Hyperbolic tangent. Argument is in radians. *) - -external ceil : float -> float = "caml_ceil_float" "ceil" -[@@unboxed] [@@noalloc] -(** Round above to an integer value. - [ceil f] returns the least integer value greater than or equal to [f]. - The result is returned as a float. *) - -external floor : float -> float = "caml_floor_float" "floor" -[@@unboxed] [@@noalloc] -(** Round below to an integer value. - [floor f] returns the greatest integer value less than or - equal to [f]. - The result is returned as a float. *) - -external copysign : float -> float -> float - = "caml_copysign_float" "caml_copysign" -[@@unboxed] [@@noalloc] -(** [copysign x y] returns a float whose absolute value is that of [x] - and whose sign is that of [y]. If [x] is [nan], returns [nan]. - If [y] is [nan], returns either [x] or [-. x], but it is not - specified which. *) - -external frexp : float -> float * int = "caml_frexp_float" -(** [frexp f] returns the pair of the significant - and the exponent of [f]. When [f] is zero, the - significant [x] and the exponent [n] of [f] are equal to - zero. When [f] is non-zero, they are defined by - [f = x *. 2 ** n] and [0.5 <= x < 1.0]. *) - -external ldexp : (float [@unboxed]) -> (int [@untagged]) -> (float [@unboxed]) = - "caml_ldexp_float" "caml_ldexp_float_unboxed" [@@noalloc] -(** [ldexp x n] returns [x *. 2 ** n]. *) - -external modf : float -> float * float = "caml_modf_float" -(** [modf f] returns the pair of the fractional and integral - part of [f]. *) - -type t = float -(** An alias for the type of floating-point numbers. *) - -val compare: t -> t -> int -(** [compare x y] returns [0] if [x] is equal to [y], a negative integer if [x] - is less than [y], and a positive integer if [x] is greater than - [y]. [compare] treats [nan] as equal to itself and less than any other float - value. This treatment of [nan] ensures that [compare] defines a total - ordering relation. *) - -val equal: t -> t -> bool -(** The equal function for floating-point numbers, compared using {!compare}. *) - -val hash: t -> int -(** The hash function for floating-point numbers. *) - -module Array : sig - type t - val create : int -> t - val length : t -> int - val get : t -> int -> float - val set : t -> int -> float -> unit - val unsafe_get : t -> int -> float - val unsafe_set : t -> int -> float -> unit -end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-stdlib-shims-0.1.0/src/pervasives.ml new/ocaml-stdlib-shims-0.1.0/src/pervasives.ml --- old/ocaml-stdlib-shims-0.1.0/src/pervasives.ml 1970-01-01 01:00:00.000000000 +0100 +++ new/ocaml-stdlib-shims-0.1.0/src/pervasives.ml 2019-10-09 12:21:12.000000000 +0200 @@ -0,0 +1,5 @@ +[@@@ocaml.deprecated "Use Stdlib instead."] + +[@@@ocaml.warning "-3"] + +include Stdlib.Pervasives diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-stdlib-shims-0.1.0/src/seq.ml new/ocaml-stdlib-shims-0.1.0/src/seq.ml --- old/ocaml-stdlib-shims-0.1.0/src/seq.ml 2019-09-23 15:11:38.000000000 +0200 +++ new/ocaml-stdlib-shims-0.1.0/src/seq.ml 1970-01-01 01:00:00.000000000 +0100 @@ -1,73 +0,0 @@ -(**************************************************************************) -(* *) -(* OCaml *) -(* *) -(* Simon Cruanes *) -(* *) -(* Copyright 2017 Institut National de Recherche en Informatique et *) -(* en Automatique. *) -(* *) -(* All rights reserved. This file is distributed under the terms of *) -(* the GNU Lesser General Public License version 2.1, with the *) -(* special exception on linking described in the file LICENSE. *) -(* *) -(**************************************************************************) - -(* Module [Seq]: functional iterators *) - -type +'a node = - | Nil - | Cons of 'a * 'a t - -and 'a t = unit -> 'a node - -let empty () = Nil - -let return x () = Cons (x, empty) - -let rec map f seq () = match seq() with - | Nil -> Nil - | Cons (x, next) -> Cons (f x, map f next) - -let rec filter_map f seq () = match seq() with - | Nil -> Nil - | Cons (x, next) -> - match f x with - | None -> filter_map f next () - | Some y -> Cons (y, filter_map f next) - -let rec filter f seq () = match seq() with - | Nil -> Nil - | Cons (x, next) -> - if f x - then Cons (x, filter f next) - else filter f next () - -let rec flat_map f seq () = match seq () with - | Nil -> Nil - | Cons (x, next) -> - flat_map_app f (f x) next () - -(* this is [append seq (flat_map f tail)] *) -and flat_map_app f seq tail () = match seq () with - | Nil -> flat_map f tail () - | Cons (x, next) -> - Cons (x, flat_map_app f next tail) - -let fold_left f acc seq = - let rec aux f acc seq = match seq () with - | Nil -> acc - | Cons (x, next) -> - let acc = f acc x in - aux f acc next - in - aux f acc seq - -let iter f seq = - let rec aux seq = match seq () with - | Nil -> () - | Cons (x, next) -> - f x; - aux next - in - aux seq diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-stdlib-shims-0.1.0/src/seq.mli new/ocaml-stdlib-shims-0.1.0/src/seq.mli --- old/ocaml-stdlib-shims-0.1.0/src/seq.mli 2019-09-23 15:11:38.000000000 +0200 +++ new/ocaml-stdlib-shims-0.1.0/src/seq.mli 1970-01-01 01:00:00.000000000 +0100 @@ -1,82 +0,0 @@ -(**************************************************************************) -(* *) -(* OCaml *) -(* *) -(* Simon Cruanes *) -(* *) -(* Copyright 2017 Institut National de Recherche en Informatique et *) -(* en Automatique. *) -(* *) -(* All rights reserved. This file is distributed under the terms of *) -(* the GNU Lesser General Public License version 2.1, with the *) -(* special exception on linking described in the file LICENSE. *) -(* *) -(**************************************************************************) - -(* Module [Seq]: functional iterators *) - -(** {1 Functional Iterators} *) - -(** The type ['a t] is a {b delayed list}, i.e. a list where some evaluation - is needed to access the next element. This makes it possible to build - infinite sequences, to build sequences as we traverse them, and to transform - them in a lazy fashion rather than upfront. -*) - -(** @since 4.07 *) - -type 'a t = unit -> 'a node -(** The type of delayed lists containing elements of type ['a]. - Note that the concrete list node ['a node] is delayed under a closure, - not a [lazy] block, which means it might be recomputed every time - we access it. *) - -and +'a node = - | Nil - | Cons of 'a * 'a t -(** A fully-evaluated list node, either empty or containing an element - and a delayed tail. *) - -val empty : 'a t -(** The empty sequence, containing no elements. *) - -val return : 'a -> 'a t -(** The singleton sequence containing only the given element. *) - -val map : ('a -> 'b) -> 'a t -> 'b t -(** [map f seq] returns a new sequence whose elements are the elements of - [seq], transformed by [f]. - This transformation is lazy, it only applies when the result is traversed. - - If [seq = [1;2;3]], then [map f seq = [f 1; f 2; f 3]]. *) - -val filter : ('a -> bool) -> 'a t -> 'a t -(** Remove from the sequence the elements that do not satisfy the - given predicate. - This transformation is lazy, it only applies when the result is - traversed. *) - -val filter_map : ('a -> 'b option) -> 'a t -> 'b t -(** Apply the function to every element; if [f x = None] then [x] is dropped; - if [f x = Some y] then [y] is returned. - This transformation is lazy, it only applies when the result is - traversed. *) - -val flat_map : ('a -> 'b t) -> 'a t -> 'b t -(** Map each element to a subsequence, then return each element of this - sub-sequence in turn. - This transformation is lazy, it only applies when the result is - traversed. *) - -val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a -(** Traverse the sequence from left to right, combining each element with the - accumulator using the given function. - The traversal happens immediately and will not terminate on infinite - sequences. - - Also see {!List.fold_left} *) - -val iter : ('a -> unit) -> 'a t -> unit -(** Iterate on the sequence, calling the (imperative) function on every element. - The traversal happens immediately and will not terminate on infinite - sequences. *) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-stdlib-shims-0.1.0/src/uchar.ml new/ocaml-stdlib-shims-0.1.0/src/uchar.ml --- old/ocaml-stdlib-shims-0.1.0/src/uchar.ml 2019-09-23 15:11:38.000000000 +0200 +++ new/ocaml-stdlib-shims-0.1.0/src/uchar.ml 1970-01-01 01:00:00.000000000 +0100 @@ -1,51 +0,0 @@ -(***********************************************************************) -(* *) -(* OCaml *) -(* *) -(* Daniel C. Buenzli *) -(* *) -(* Copyright 2014 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the GNU Library General Public License, with *) -(* the special exception on linking described in file ../LICENSE. *) -(* *) -(***********************************************************************) - -let err_no_pred = "U+0000 has no predecessor" -let err_no_succ = "U+10FFFF has no successor" -let err_not_sv i = Printf.sprintf "%X is not an Unicode scalar value" i -let err_not_latin1 u = Printf.sprintf "U+%04X is not a latin1 character" u - -type t = int - -let min = 0x0000 -let max = 0x10FFFF -let lo_bound = 0xD7FF -let hi_bound = 0xE000 - -let succ u = - if u = lo_bound then hi_bound else - if u = max then invalid_arg err_no_succ else - u + 1 - -let pred u = - if u = hi_bound then lo_bound else - if u = min then invalid_arg err_no_pred else - u - 1 - -let is_valid i = (min <= i && i <= lo_bound) || (hi_bound <= i && i <= max) -let of_int i = if is_valid i then i else invalid_arg (err_not_sv i) -external unsafe_of_int : int -> t = "%identity" -external to_int : t -> int = "%identity" - -let is_char u = u < 256 -let of_char c = Char.code c -let to_char u = - if u > 255 then invalid_arg (err_not_latin1 u) else - Char.unsafe_chr u - -let unsafe_to_char = Char.unsafe_chr - -let equal : int -> int -> bool = ( = ) -let compare : int -> int -> int = Pervasives.compare -let hash = to_int diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-stdlib-shims-0.1.0/src/uchar.mli new/ocaml-stdlib-shims-0.1.0/src/uchar.mli --- old/ocaml-stdlib-shims-0.1.0/src/uchar.mli 2019-09-23 15:11:38.000000000 +0200 +++ new/ocaml-stdlib-shims-0.1.0/src/uchar.mli 1970-01-01 01:00:00.000000000 +0100 @@ -1,82 +0,0 @@ -(***********************************************************************) -(* *) -(* OCaml *) -(* *) -(* Daniel C. Buenzli *) -(* *) -(* Copyright 2014 Institut National de Recherche en Informatique et *) -(* en Automatique. All rights reserved. This file is distributed *) -(* under the terms of the GNU Library General Public License, with *) -(* the special exception on linking described in file ../LICENSE. *) -(* *) -(***********************************************************************) - -(** Unicode characters. - - @since 4.03 *) - -type t -(** The type for Unicode characters. - - A value of this type represents an Unicode - {{:http://unicode.org/glossary/#unicode_scalar_value}scalar - value} which is an integer in the ranges [0x0000]...[0xD7FF] or - [0xE000]...[0x10FFFF]. *) - -val min : t -(** [min] is U+0000. *) - -val max : t -(** [max] is U+10FFFF. *) - -val succ : t -> t -(** [succ u] is the scalar value after [u] in the set of Unicode scalar - values. - - @raise Invalid_argument if [u] is {!max}. *) - -val pred : t -> t -(** [pred u] is the scalar value before [u] in the set of Unicode scalar - values. - - @raise Invalid_argument if [u] is {!min}. *) - -val is_valid : int -> bool -(** [is_valid n] is [true] iff [n] is an Unicode scalar value - (i.e. in the ranges [0x0000]...[0xD7FF] or [0xE000]...[0x10FFFF]).*) - -val of_int : int -> t -(** [of_int i] is [i] as an Unicode character. - - @raise Invalid_argument if [i] does not satisfy {!is_valid}. *) - -(**/**) -val unsafe_of_int : int -> t -(**/**) - -val to_int : t -> int -(** [to_int u] is [u] as an integer. *) - -val is_char : t -> bool -(** [is_char u] is [true] iff [u] is a latin1 OCaml character. *) - -val of_char : char -> t -(** [of_char c] is [c] as an Unicode character. *) - -val to_char : t -> char -(** [to_char u] is [u] as an OCaml latin1 character. - - @raise Invalid_argument if [u] does not satisfy {!is_char}. *) - -(**/**) -val unsafe_to_char : t -> char -(**/**) - -val equal : t -> t -> bool -(** [equal u u'] is [u = u']. *) - -val compare : t -> t -> int -(** [compare u u'] is [Pervasives.compare u u']. *) - -val hash : t -> int -(** [hash u] associates a non-negative integer to [u]. *) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ocaml-stdlib-shims-0.1.0/test/test.ml new/ocaml-stdlib-shims-0.1.0/test/test.ml --- old/ocaml-stdlib-shims-0.1.0/test/test.ml 2019-09-23 15:11:38.000000000 +0200 +++ new/ocaml-stdlib-shims-0.1.0/test/test.ml 2019-10-09 12:21:12.000000000 +0200 @@ -1,11 +1,2 @@ let _ = Stdlib.(+) let _ = Stdlib.List.map - -let _ = Float.max_float -let _ = Stdlib.Float.max_float - -let _ = Seq.empty -let _ = Stdlib.Seq.empty - -let _ = Uchar.min -let _ = Stdlib.Uchar.min
