He oído que Scala tiene tipos dependientes de la ruta. Tiene algo que ver con las clases internas, pero ¿qué significa esto realmente y por qué me importa?
scala
type-systems
path-dependent-type
oxbow_lakes
fuente
fuente
Respuestas:
Mi ejemplo favorito:
Entonces, el tipo de
Coordinate
depende de la instancia de laBoard
que se instancia. Hay todo tipo de cosas que se pueden lograr con esto, dando una especie de seguridad de tipo que depende de los valores y no solo de los tipos.Esto puede sonar como tipos dependientes, pero es más limitado. Por ejemplo, el tipo de
occupied
depende del valor deBoard
. Arriba, la última línea no funciona porque el tipo dec2
esb2.Coordinate
, mientras queoccupied
el tipo esSet[b1.Coordinate]
. Tenga en cuenta que se puede usar otro identificador con el mismo tipo deb1
, por lo que no es el identificadorb1
asociado con el tipo. Por ejemplo, lo siguiente funciona:fuente