From 9c338f193e76aac9f69a04e1e97cea3f69a73051 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Wed, 9 Mar 2016 19:45:38 +0100 Subject: [PATCH] add `CCString.rev` --- src/core/CCString.cppo.ml | 4 ++++ src/core/CCString.mli | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/core/CCString.cppo.ml b/src/core/CCString.cppo.ml index 0574eab9..1cbd0e73 100644 --- a/src/core/CCString.cppo.ml +++ b/src/core/CCString.cppo.ml @@ -50,6 +50,10 @@ let init n f = let length = String.length +let rev s = + let n = length s in + init n (fun i -> s.[n-i-1]) + let rec _to_list s acc i len = if len=0 then List.rev acc else _to_list s (s.[i]::acc) (i+1) (len-1) diff --git a/src/core/CCString.mli b/src/core/CCString.mli index c036700e..10194703 100644 --- a/src/core/CCString.mli +++ b/src/core/CCString.mli @@ -63,6 +63,21 @@ val init : int -> (int -> char) -> string init 0 (fun _ -> assert false) = "" *) +val rev : string -> string +(** [rev s] returns the reverse of [s] + @since NEXT_RELEASE *) + +(*$Q + Q.printable_string (fun s -> s = rev (rev s)) + Q.printable_string (fun s -> length s = length (rev s)) +*) + +(*$= + "abc" (rev "cba") + "" (rev "") + " " (rev " ") +*) + val of_gen : char gen -> string val of_seq : char sequence -> string val of_klist : char klist -> string