package octez-libs
A package that contains multiple base libraries used by the Octez suite
Install
Dune Dependency
Authors
Maintainers
Sources
tezos-octez-v20.1.tag.bz2
sha256=ddfb5076eeb0b32ac21c1eed44e8fc86a6743ef18ab23fff02d36e365bb73d61
sha512=d22a827df5146e0aa274df48bc2150b098177ff7e5eab52c6109e867eb0a1f0ec63e6bfbb0e3645a6c2112de3877c91a17df32ccbff301891ce4ba630c997a65
doc/octez-libs.base/Tezos_base/TzPervasives/Empty/index.html
Module TzPervasives.Empty
Source
The main purpose of this module is to be used with parametric types such as ('a, Empty.t) result
. Such type is actually isomorphic to 'a
(see get_ok
function). This is useful if a module signature expects a generic ('a,'b) result
type, but for some instantiation, 'b
is actually empty. Here is a small example how such module can be used:
module type S = sig
type error
type 'a t
val return : 'a -> 'a t
val fail : error -> 'a t
val bind : 'a t -> ('a -> 'a t) -> (error -> 'a t) -> 'a t end
module M : S with type error = Empty.t and type 'a t = ('a,
Empty.t) result = struct
type error = Empty.t
type 'a t = ('a, Empty.t) result
let return = fun x -> Ok x
let fail = Empty.absurd
let bind = fun data left _right -> match data with | Ok x ->
left x | Error err -> Empty.absurd err end
let _ = let data = M.bind (M.return 5) (fun x -> M.return (x +
2)) (Empty.absurd) in assert (data |> Empty.get_ok = 7)
This type has no canonical inhabitant (there is no terminating OCaml value which inhabits this type).
get_ok r
eliminates the impossible case. This function is total and does not raise any exception.
absurd empty
allows constructing any type from the absurd case. This is useful to typecheck impossible branches, e.g.
Result.fold ~ok:(fun i -> i + 1) ~error:Empty.absurd (Ok 41)
Note that this particular example using `result` can be rewritten as:
let i = Empty.get_ok (Ok 41) in i + 1
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>