module Cap:Capabilities for arrays.sig..end
This modules provides the same set of features as Array, but
with the added twist that arrays can be made read-only or
write-only. Read-only arrays may then be safely shared and
distributed.
There is no loss of performance involved.
Array module for the documentation of other functions.type ('a, [< `Read | `Write ]) t
('a, [`Read | `Write]) array behaves as a regular 'a array,
while a ('a, [`Read]) array only has read-only capabilities
and a ('a, [`Write]) array only has write-only capabilities.val length : ('a, [< `Read | `Write ]) t -> intval get : ('a, [< `Read | `Write > `Read ]) t -> int -> 'aval set : ('a, [< `Read | `Write > `Write ]) t -> int -> 'a -> unitval make : int -> 'a -> ('a, [< `Read | `Write ]) tval create : int -> 'a -> ('a, [< `Read | `Write ]) tval of_array : 'a array -> ('a, [< `Read | `Write ]) t
This operation involves no copying. In other words, in
let cap = of_array a in ..., any modification in a
will also have effect on cap and reciprocally.
val to_array : ('a, [ `Read | `Write ]) t -> 'a array
This operation requires both read and write permissions
on the capability array and involves no copying. In other
words, in let a = of_array cap in ..., any modification
in a will also have effect on cap and reciprocally.
val read_only : ('a, [< `Read | `Write > `Read ]) t ->
('a, [ `Read ]) t
This operation involves no copying.
val write_only : ('a, [< `Read | `Write > `Write ]) t ->
('a, [ `Write ]) t
This operation involves no copying.
val init : int -> (int -> 'a) -> ('a, [< `Read | `Write ]) tval make_matrix : int ->
int ->
'a ->
(('a, [< `Read | `Write ]) t, [< `Read | `Write ])
tval create_matrix : int ->
int ->
'a ->
(('a, [< `Read | `Write ]) t, [< `Read | `Write ])
tval iter : ('a -> unit) -> ('a, [< `Read | `Write > `Read ]) t -> unitval map : ('a -> 'b) ->
('a, [< `Read | `Write > `Read ]) t ->
('b, [< `Read | `Write ]) tval iteri : (int -> 'a -> unit) ->
('a, [< `Read | `Write > `Read ]) t -> unitval mapi : (int -> 'a -> 'b) ->
('a, [< `Read | `Write > `Read ]) t ->
('b, [< `Read | `Write ]) tval modify : ('a -> 'a) -> ('a, [ `Read | `Write ]) t -> unitval modifyi : (int -> 'a -> 'a) -> ('a, [ `Read | `Write ]) t -> unitval fold_left : ('a -> 'b -> 'a) ->
'a -> ('b, [< `Read | `Write > `Read ]) t -> 'aval fold_right : ('a -> 'b -> 'b) ->
('a, [< `Read | `Write > `Read ]) t -> 'b -> 'bval iter2 : ('a -> 'b -> unit) ->
('a, [< `Read | `Write > `Read ]) t ->
('b, [< `Read | `Write > `Read ]) t -> unitval iter2i : (int -> 'a -> 'b -> unit) ->
('a, [< `Read | `Write > `Read ]) t ->
('b, [< `Read | `Write > `Read ]) t -> unitval for_all : ('a -> bool) -> ('a, [< `Read | `Write > `Read ]) t -> boolval exists : ('a -> bool) -> ('a, [< `Read | `Write > `Read ]) t -> boolval find : ('a -> bool) -> ('a, [< `Read | `Write > `Read ]) t -> 'aval mem : 'a -> ('a, [< `Read | `Write > `Read ]) t -> boolval memq : 'a -> ('a, [< `Read | `Write > `Read ]) t -> boolval findi : ('a -> bool) -> ('a, [< `Read | `Write > `Read ]) t -> intval filter : ('a -> bool) ->
('a, [< `Read | `Write > `Read ]) t ->
('a, [< `Read | `Write ]) tval filter_map : ('a -> 'b option) ->
('a, [< `Read | `Write > `Read ]) t ->
('b, [< `Read | `Write ]) tval find_all : ('a -> bool) ->
('a, [< `Read | `Write > `Read ]) t ->
('a, [< `Read | `Write ]) tval partition : ('a -> bool) ->
('a, [< `Read | `Write > `Read ]) t ->
('a, [< `Read | `Write ]) t *
('a, [< `Read | `Write ]) tval rev : ('a, [< `Read | `Write > `Read ]) t ->
('a, [< `Read | `Write ]) tval rev_in_place : ('a, [ `Read | `Write ]) t -> unitval append : ('a, [< `Read | `Write > `Read ]) t ->
('a, [< `Read | `Write > `Read ]) t ->
('a, [< `Read | `Write ]) tval concat : ('a, [< `Read | `Write > `Read ]) t list ->
('a, [< `Read | `Write ]) tval sub : ('a, [< `Read | `Write > `Read ]) t ->
int -> int -> ('a, [< `Read | `Write ]) tval copy : ('a, [< `Read | `Write > `Read ]) t -> 'a arrayval fill : ('a, [< `Read | `Write > `Write ]) t -> int -> int -> 'a -> unitval blit : ('a, [< `Read | `Write > `Read ]) t ->
int ->
('a, [< `Read | `Write > `Write ]) t -> int -> int -> unitval enum : ('a, [< `Read | `Write > `Read ]) t -> 'a BatEnum.tval of_enum : 'a BatEnum.t -> ('a, [< `Read | `Write ]) tval backwards : ('a, [< `Read | `Write > `Read ]) t -> 'a BatEnum.tval of_backwards : 'a BatEnum.t -> ('a, [< `Read | `Write ]) tval to_list : ('a, [< `Read | `Write > `Read ]) t -> 'a listval of_list : 'a list -> ('a, [< `Read | `Write ]) tval make_compare : ('a -> 'a -> int) ->
('a, [< `Read | `Write > `Read ]) t ->
('a, [< `Read | `Write > `Read ]) t -> intval sort : ('a -> 'a -> int) -> ('a, [ `Read | `Write ]) t -> unitval stable_sort : ('a -> 'a -> int) -> ('a, [ `Read | `Write ]) t -> unitval fast_sort : ('a -> 'a -> int) -> ('a, [ `Read | `Write ]) t -> unitval print : ?first:string ->
?last:string ->
?sep:string ->
('a BatIO.output -> 'b -> unit) ->
'a BatIO.output -> ('b, [< `Read | `Write > `Read ]) t -> unitval sprint : ?first:string ->
?last:string ->
?sep:string ->
('a BatIO.output -> 'b -> unit) ->
('b, [< `Read | `Write > `Read ]) t -> stringmodule Exceptionless:sig..end
BatArray.Cap without exceptions.
module Labels:sig..end
BatArray.Cap with labels.