package hack_parallel

  1. Overview
  2. Docs
Parallel and shared memory library

Install

Dune Dependency

Authors

Maintainers

Sources

1.0.1.tar.gz
md5=ba7c72bc207e326b72e294fc76f6ad2c
sha512=5020d47f97bea2f88e2a40411894d03232a7f2282606926c93c7d4c96d72e94a966be852897a9b16f7e0893ba376512045abb9d93020a7c03c3def4f3d918f8e

doc/src/hack_parallel.utils/hack_core.ml.html

Source file hack_core.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
(**
 * Copyright (c) 2015, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 *
*)

module List = struct
  include Hack_core_list

  let rec fold_left_env env l ~init ~f = match l with
    | [] -> env, init
    | x :: xs ->
        let env, init = f env init x in
        fold_left_env env xs ~init ~f

  let rec map_env env xs ~f = match xs with
    | [] -> env, []
    | x :: xs ->
        let env, x = f env x in
        let env, xs = map_env env xs ~f in
        env, x :: xs

  let rev_map_env env xs ~f =
    let f2 env init x =
      let env, x = f env x in
      env, x :: init
    in
    fold_left_env env xs ~init:[] ~f:f2

  let rec map2_env env l1 l2 ~f = match l1, l2 with
    | [], [] -> env, []
    | [], _ | _, [] -> raise @@ Invalid_argument "map2_env"
    | x1 :: rl1, x2 :: rl2 ->
        let env, x = f env x1 x2 in
        let env, rl = map2_env env rl1 rl2 ~f in
        env, x :: rl

  let for_all2 = List.for_all2
end
OCaml

Innovation. Community. Security.