diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 1997-10-24 15:54:07 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 1997-10-24 15:54:07 +0000 |
commit | 56e001e1c4b07c45aa8e0d9ff4cbb085e8ac1bf8 (patch) | |
tree | 38db19ad695cfc911477581b49e5fe1139448fa4 /stdlib/array.ml | |
parent | 7de9d9776f1f2f9226e720355133e6a8731255d3 (diff) |
Array.iteri Array.mapi Array.fold_left Array.fold_right
String.index String.rindex
Filename: utiliser String.rindex
Genlex: erreur dans doc
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@1741 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'stdlib/array.ml')
-rw-r--r-- | stdlib/array.ml | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/stdlib/array.ml b/stdlib/array.ml index 7a103f4ea..f6477d1f9 100644 --- a/stdlib/array.ml +++ b/stdlib/array.ml @@ -111,6 +111,19 @@ let map f a = r end +let iteri f a = + for i = 0 to length a - 1 do f i (unsafe_get a i) done + +let mapi f a = + let l = length a in + if l = 0 then [||] else begin + let r = create l (f 0 (unsafe_get a 0)) in + for i = 1 to l - 1 do + unsafe_set r i (f i (unsafe_get a i)) + done; + r + end + let to_list a = let rec tolist i res = if i < 0 then res else tolist (i - 1) (unsafe_get a i :: res) in @@ -124,3 +137,17 @@ let of_list = function [] -> a | hd::tl -> unsafe_set a i hd; fill (i+1) tl in fill 1 tl + +let fold_left f x a = + let r = ref x in + for i = 0 to Array.length a - 1 do + r := f !r (unsafe_get a i) + done; + !r + +let fold_right f a x = + let r = ref x in + for i = Array.length a - 1 downto 0 do + r := f (unsafe_get a i) !r + done; + !r |