package biotk

  1. Overview
  2. Docs
Bioinformatics toolkit

Install

Dune Dependency

Authors

Maintainers

Sources

biotk-v0.0.0.tbz
sha256=4d487ddb8951d51f0c461a42da2e7f4a8fedcc3691718a93ac577da5d3058b2e
sha512=491ccccba2edb4565946361bbf3a0e764b57238cc8ee8af469a717dcdf18711cf9516becc91956997b870c8944ebe6d1662a2edbb5567c439991c5afd3bceb15

doc/src/biotk_pipes_unix/pipe.ml.html

Source file pipe.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
include Biotk_pipes.Pipe.Make(struct
    type 'a t = 'a
    let return x = x
    let bind x f = f x
  end)

open Monad_infix

let input_string len =
  let buf = Bytes.make len '\000' in
  fun ic ->
    let n = input ic buf 0 len in
    if n = 0 then None
    else Some (Bytes.sub_string buf 0 n)

let from_file ?(buffer_size = 64 * 1024) fn =
  bracket
    (fun () -> open_in fn)
    close_in
    (fun ic ->
       let rec loop () =
         match input_string buffer_size ic with
         | Some i -> yield i >>= loop
         | None -> Done ()
       in
       loop ())

let to_file fn =
  bracket
    (fun () -> open_out fn)
    close_out
    (fun oc ->
       let rec loop () =
         await () >>= function
         | None -> Done ()
         | Some v ->
           output_string oc v ;
           loop ()
       in
       loop ())
OCaml

Innovation. Community. Security.