From 93b6a18c41cf71fa1efa3d80de0260994be05775 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Wed, 16 Apr 2014 17:56:54 +0200 Subject: [PATCH] cleanup of Infix (removed some operators); remove TypeClass --- sequence.ml | 56 +----------------------------------------- sequence.mli | 40 +----------------------------- tests/test_sequence.ml | 1 - 3 files changed, 2 insertions(+), 95 deletions(-) diff --git a/sequence.ml b/sequence.ml index 0823cd0..9ea456a 100644 --- a/sequence.ml +++ b/sequence.ml @@ -630,69 +630,15 @@ let random_array a = let random_list l = random_array (Array.of_list l) -(** {2 Type-classes} *) - -module TypeClass = struct - (** {3 Classes} *) - type ('a,'b) sequenceable = { - to_seq : 'b -> 'a t; - of_seq : 'a t -> 'b; - } - - type ('a,'b) addable = { - empty : 'b; - add : 'b -> 'a -> 'b; - } - - type 'a monoid = ('a,'a) addable - - type ('a,'b) iterable = { - iter : ('a -> unit) -> 'b -> unit; - } - - (** {3 Instances} *) - - let (sequenceable : ('a,'a t) sequenceable) = { - to_seq = (fun seq -> seq); - of_seq = (fun seq -> seq); - } - - let (iterable : ('a, 'a t) iterable) = { - iter = (fun f seq -> iter f seq); - } - - let (monoid : 'a t monoid) = { - empty = empty; - add = (fun s1 s2 -> append s1 s2); - } - - (** {3 Conversions} *) - - let of_iterable iterable x = - from_iter (fun k -> iterable.iter k x) - - - let to_addable addable seq = - fold addable.add addable.empty seq -end - (** {2 Infix functions} *) module Infix = struct let (--) i j = int_range ~start:i ~stop:j let (--^) i j = int_range_dec ~start:i ~stop:j - - let (|>) x f = f x - - let (@@) a b = append a b - - let (>>=) x f = flatMap f x end -let (--) = Infix.(--) - -let (--^) = Infix.(--^) +include Infix (** {2 Pretty printing of sequences} *) diff --git a/sequence.mli b/sequence.mli index e9c4574..97ef759 100644 --- a/sequence.mli +++ b/sequence.mli @@ -381,38 +381,6 @@ val random_list : 'a list -> 'a t (** Infinite sequence of random elements of the list. Basically the same as {!random_array}. *) -(** {2 Type-classes} *) - -module TypeClass : sig - (** {3 Classes} *) - type ('a,'b) sequenceable = { - to_seq : 'b -> 'a t; - of_seq : 'a t -> 'b; - } - - type ('a,'b) addable = { - empty : 'b; - add : 'b -> 'a -> 'b; - } - - type 'a monoid = ('a,'a) addable - - type ('a,'b) iterable = { - iter : ('a -> unit) -> 'b -> unit; - } - - (** {3 Instances} *) - - val sequenceable : ('a,'a t) sequenceable - val iterable : ('a,'a t) iterable - val monoid : 'a t monoid - - (** {3 Conversions} *) - - val of_iterable : ('a,'b) iterable -> 'b -> 'a t - val to_addable : ('a,'b) addable -> 'a t -> 'b -end - (** {2 Infix functions} *) module Infix : sig @@ -424,15 +392,9 @@ module Infix : sig (** [a --^ b] is the range of integers from [b] to [a], both included, in decreasing order (starts from [a]). It will therefore be empty if [a < b]. *) - - val (|>) : 'a -> ('a -> 'b) -> 'b - - val (@@) : 'a t -> 'a t -> 'a t end -val (--) : int -> int -> int t - -val (--^) : int -> int -> int t +include module type of Infix (** {2 Pretty printing of sequences} *) diff --git a/tests/test_sequence.ml b/tests/test_sequence.ml index e5f6a3f..8788249 100644 --- a/tests/test_sequence.ml +++ b/tests/test_sequence.ml @@ -27,7 +27,6 @@ let test_concat () = let s2 = (6 -- 10) in let l = [1;2;3;4;5;6;7;8;9;10] in OUnit.assert_equal l (S.to_list (S.append s1 s2)); - OUnit.assert_equal l (S.to_list (s1 @@ s2)); () let test_fold () =