package irmin

  1. Overview
  2. Docs
Irmin, a distributed database that follows the same design principles as Git

Install

Dune Dependency

Authors

Maintainers

Sources

irmin-3.3.0.tbz
sha256=38f90d1dcada0a691e45ac9f26e1e0ea3e6967e9660c7b694fdd2423fbc92ea8
sha512=aac01211fb70c10727bdd8457f403f784d63f3be4d7b513577694448088006b6f39063d07a212f5b6f56639d0937231bef47c53cb56801460d6177824f6cbb81

doc/irmin/Irmin/Perms/index.html

Module Irmin.PermsSource

Types representing permissions 'perms for performing operations on a certain type 'perms t.

They are intended to be used as phantom parameters of the types that they control access to. As an example, consider the following type of references with permissions:

  module Ref : sig
    type (+'a, -'perms) t

    val create : 'a -> ('a, read_write) t
    val get : ('a, [> read ]) t -> 'a
    val set : ('a, [> write ]) t -> 'a -> unit
  end

This type allows references to be created with arbitrary read-write access. One can then create weaker views onto the reference – with access to fewer operations – by upcasting:

  let read_only t = (t :> (_, read) Ref.t)
  let write_only t = (t :> (_, write) Ref.t)

Note that the 'perms phantom type parameter should be contravariant: it's safe to discard permissions, but not to gain new ones.

Sourcemodule Read : sig ... end
Sourcemodule Write : sig ... end
Sourcemodule Read_write : sig ... end
Sourcetype read = Read.t

The type parameter of a handle with read permissions.

Sourcetype write = Write.t

The type parameter of a handle with write permissions.

Sourcetype read_write = Read_write.t

The type parameter of a handle with both read and write permissions.

OCaml

Innovation. Community. Security.