diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/util.ml | 6 | ||||
| -rw-r--r-- | lib/util.mli | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/lib/util.ml b/lib/util.ml index 363e13b1a6..963ed51930 100644 --- a/lib/util.ml +++ b/lib/util.ml @@ -371,6 +371,12 @@ let array_map3 f v1 v2 v3 = res end +(* Matrices *) + +let matrix_transpose mat = + List.fold_right (List.map2 (fun p c -> p::c)) mat + (if mat = [] then [] else List.map (fun _ -> []) (List.hd mat)) + (* Functions *) let compose f g x = f (g x) diff --git a/lib/util.mli b/lib/util.mli index 847842865d..9378011e27 100644 --- a/lib/util.mli +++ b/lib/util.mli @@ -101,6 +101,10 @@ val array_map2_i : (int -> 'a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array val array_map3 : ('a -> 'b -> 'c -> 'd) -> 'a array -> 'b array -> 'c array -> 'd array +(*s Matrices *) + +val matrix_transpose : 'a list list -> 'a list list + (*s Functions. *) val compose : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b |
