投影類型
投影類型表示如下代碼中的"Self.AddO"等類型
Add R = Trait {
. `_+_` = Self, R -> Self.AddO
.AddO = Type
}
AddForInt = Patch(Int, Impl := Add Int)
AddForInt.
AddO = Int
類型"Add(R)"可以說是定義了與某個對象的加法的類型。由于方法應該是一個類型屬性,+
類型聲明應該寫在縮進下面
Add
類型的場景是聲明 .AddO = Type
,而 .AddO
類型的實體是一個投影類型,由一個作為 子類型的類型持有 添加
。例如,Int.AddO = Int
、Odd.AddO = Even
assert Int < Add
assert Int.AddO == Int
assert Odd < Add
assert Odd.AddO == Even