Ouvi dizer que Scala tem tipos dependentes de caminho. Tem algo a ver com classes internas, mas o que isso realmente significa e por que eu me importo?
scala
type-systems
path-dependent-type
oxbow_lakes
fonte
fonte
Respostas:
Meu exemplo favorito:
Portanto, o tipo de
Coordinate
depende da instância daBoard
qual foi instanciado. Há todo tipo de coisa que pode ser realizada com isso, fornecendo um tipo de segurança de tipo dependente de valores e não apenas de tipos.Pode parecer tipos dependentes, mas é mais limitado. Por exemplo, o tipo de
occupied
é dependente do valor deBoard
. Acima, a última linha não funciona porque o tipo dec2
éb2.Coordinate
, enquantooccupied
o tipo éSet[b1.Coordinate]
. Observe que é possível usar outro identificador com o mesmo tipo deb1
, portanto, não é o identificadorb1
associado ao tipo. Por exemplo, o seguinte funciona:fonte