package codept-lib

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file with_deps.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

type 'a t = { deps: Deps.t ; x:'a}
let with_deps deps x = {deps; x}
let ( <+> ) more {deps; x} = {deps = Deps.(more + deps); x }
let no_deps x = with_deps Deps.empty x
let (>>=) x f = x.deps <+> f x.x
let bind = (>>=)

let (>>|) x f = x >>= (fun x -> no_deps @@ f x)
let map = (>>|)
let (<<|) f x  = x >>= (fun x -> no_deps @@ f x)
let (<*>) x y = { deps = Deps.merge x.deps y.deps; x= x.x , y.x}

let deps x = x.deps
let value x = x.x
let unpack {deps; x} = deps, x
let comm {deps; x} = match x with
  | Ok a -> Ok (with_deps deps a)
  | Error b -> Error(with_deps deps b)
OCaml

Innovation. Community. Security.