TL-B 类型
advanced level
此信息属于非常底层的内容,对新手来说可能难以理解。 因此,您可以稍后再阅读。
在本节中,我们将分析复杂和非传统的类型化语言二进制(TL-B)结构。开始之前,我们建议先阅读此文档,以更熟悉该主题。
Either
left$0 {X:Type} {Y:Type} value:X = Either X Y;
right$1 {X:Type} {Y:Type} value:Y = Either X Y;
Either类型用于可能出现两种结果类型之一的情况。在这种情况下,类型选择取决于所示的前缀位。如果前缀位是0,则序列化左类型,而如果使用1前缀位,则序列化右类型。
例如,在序列化消息时使用它,当消息体要么是主cell的一部分,要么链接到另一个cell。
Maybe
nothing$0 {X:Type} = Maybe X;
just$1 {X:Type} value:X = Maybe X;
Maybe类型与可选值一起使用。在这些情况下,如果第一位是0,则不会序列化该值(实际上被跳过),而如果值是1,则会被序列化。
Both
pair$_ {X:Type} {Y:Type} first:X second:Y = Both X Y;
Both类型变体仅与普通对一起使用,两种类型依次序列化,没有条件。
Unary
Unary函数类型通常用于动态大小的结构,例如hml_short。
Unary提供两个主要选项:
unary_zero$0 = Unary ~0;
unary_succ$1 {n:#} x:(Unary ~n) = Unary ~(n + 1);