J'ai entendu dire que Scala a des types dépendant du chemin. C'est quelque chose à voir avec les classes internes, mais qu'est-ce que cela signifie réellement et pourquoi est-ce que je m'en soucie?
scala
type-systems
path-dependent-type
oxbow_lakes
la source
la source
Réponses:
Mon exemple préféré:
Ainsi, le type de
Coordinate
dépend de l'instance àBoard
partir de laquelle il a été instancié. Il y a toutes sortes de choses qui peuvent être accomplies avec cela, donnant une sorte de sécurité de type qui dépend des valeurs et non des seuls types.Cela peut ressembler à des types dépendants, mais c'est plus limité. Par exemple, le type de
occupied
dépend de la valeur deBoard
. Ci-dessus, la dernière ligne ne fonctionne pas car le type dec2
estb2.Coordinate
, tandis queoccupied
le type de estSet[b1.Coordinate]
. Notez que l'on peut utiliser un autre identifiant avec le même type deb1
, donc ce n'est pas l' identifiantb1
qui est associé au type. Par exemple, les travaux suivants:la source