package biotk

  1. Overview
  2. Docs
Bioinformatics toolkit

Install

dune-project
 Dependency

Authors

Maintainers

Sources

biotk-0.4.tbz
sha256=fb28a30b0d4cfbbab3a09c8c9ba3425bbe0ceb89598060f7666b69d0d353ee02
sha512=19bb3a09d281634e49c9ef69aa2cd9d9f71ae03d6b61d6672c38e835b967d0b07ff8412dd510295fd6c9c0e2f23ac758122c3f588404101203e11f94d4949b08

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 ())