簡體   English   中英

路徑依賴類型和依賴類型之間有什么區別?

[英]What is the difference between path-dependent types and dependent types?

Scala具有路徑依賴類型,但據說Scala不支持依賴類型。 路徑依賴類型和依賴類型之間有什么區別?

據我所知,路徑依賴類型是一種依賴類型。

依賴類型是依賴於值的類型。 路徑依賴類型是特定類型的依賴類型,其中類型取決於路徑。

我不確定Scala社區之外是否存在術語“路徑依賴類型”。 無論如何,問題是,路徑是什么? 對於Scala,這是在語言規范中定義的:基本上它是非變量值上的選擇序列abc..

路徑依賴類型是具有路徑的類型,例如aT in

class A { type T; def f: T }
def f(a: A): a.T = a.f

還有其他類型的依賴類型。 例如,在Scala中,這是一個將基於文字的類型添加到語言的待定提議 ,因此您可以編寫val x: 42.type = 21 + 21

為了鍵入檢查使用依賴類型的程序,類型系統(和編譯器)需要知道這些值及其操作的語義。 Scala編譯器知道選擇的語義,並可以決定兩個路徑是否相同。 對於使用基於文字的類型的示例,需要擴展編譯器以了解整數上的+運算意味着什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM