J'essaye d'écrire un enregistrement dans Idris mais qui a un paramètre générique qui doit être contraint par une interface. Pour normaux types d'union, je peux écrire:Contraindre un type d'enregistrement dans Idris
data BSTree : (a : Type) -> Type where
Empty : Ord a => BSTree a
Node : Ord a => BSTree a -> a -> BSTree a
mais je suis en train de comprendre la syntaxe pour faire la même chose, juste avec un record. J'ai essayé quelque chose comme:
record Point a where
constructor MkPoint : Eq a => a -> a -> Point a
x : a
y : a
mais il ne compile pas.
Existe-t-il un moyen de le faire dans Idris?
TIA
Merci. Je sais que vous * ne * devriez pas ajouter de contraintes directement sur les champs. C'est pourquoi dans mon exemple d'enregistrement, j'ai essayé d'ajouter la contrainte au constructeur de données MkPoint (ce que je fais aussi pour le type d'union). Est-ce qu'il n'y a aucun moyen pour moi d'avoir la contrainte sur le constructeur de données MkPoint? –
@RouanvanDalen Non, il n'y a aucun moyen d'ajouter des contraintes directement au constructeur. Et il n'y a pas de sens réel car il n'y a pas de différence sémantique entre avoir des contraintes sur les champs et avoir des contraintes sur 'constructor'. Seule différence syntaxique. – Shersh