Ein abhängiger Typ ist ein Typ, der von einem Wert abhängt. Ein pfadabhängiger Typ ist eine bestimmte Art abhängiger Typen, bei denen der Typ von einem Pfad abhängt.
Ich bin mir nicht sicher, ob der Begriff "Pfadabhängiger Typ" außerhalb der Scala-Gemeinschaft existiert. In jedem Fall ist die Frage, was ist ein Pfad? Für Scala ist dies in der language specification definiert: im Grunde ist es eine Sequenz von Selektionen a.b.c...
auf nicht variable Werte.
Ein Pfad abhängiger Typ ist ein Typ mit einem Weg, zum Beispiel in a.T
class A { type T; def f: T }
def f(a: A): a.T = a.f
Es gibt auch andere Arten von Typen abhängig. In Scala ist das beispielsweise ein pending proposal, um der Sprache literalbasierte Typen hinzuzufügen, sodass Sie val x: 42.type = 21 + 21
schreiben können.
Um ein Programm zu testen, das abhängige Typen verwendet, muss das Typsystem (und der Compiler) über die Semantik dieser Werte und ihrer Operationen Bescheid wissen. Der Scala-Compiler kennt die Semantik der Auswahl und kann entscheiden, ob zwei Pfade gleich sind oder nicht. Für das Beispiel, das literal-basierte Typen verwendet, muss der Compiler erweitert werden, um zu wissen, was die Operation +
für Integer bedeutet.
Siehe Miles Sabins Antwort [hier] (http://stackoverflow.com/a/12937819/334519) auf eine ähnliche Frage (Ihre Frage ist viel besser, deshalb werde ich nicht als Duplikat markieren). –