package octez-proto-libs
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=c6df840ebbf115e454db949028c595bec558a59a66cade73b52a6d099d6fa4d4
sha512=d8aee903b9fe130d73176bc8ec38b78c9ff65317da3cb4f3415f09af0c625b4384e7498201fdb61aa39086a7d5d409d0ab3423f9bc3ab989a680cf444a79bc13
doc/octez-proto-libs.protocol-environment/Tezos_protocol_environment/V5/Make/Equality_witness/index.html
Module Make.Equality_witness
Source
This module provides support for type equalities and runtime type identifiers.
For two types a
and b
, (a, b) eq
is a witness that a = b
. This is a standard generalized algebraic datatype on top of which type-level programming techniques can be implemented.
Given a type a
, an inhabitant of a t
is a dynamic identifier for a
. Identifiers can be compared for equality. They are also equipped with a hash function.
WARNING: the hash function changes at every run. Therefore, the result of the hash function should never be stored.
Notice that dynamic identifiers are not unique: two identifiers for a
can have distinct hash and can be physically distinct. Hence, only eq
can decide if two type identifiers correspond to the same type.
A dynamic representation for 'a
.
make ()
is a dynamic representation for 'a
. A fresh identifier is returned each time make ()
is evaluated.
eq ida idb
returns a proof that a = b
if ida
and idb
identify the same type.