Est-il possible de faire des types dépendants dans une raquette typée?


9

Est-il possible d'utiliser des types dépendants dans l' implémentation de raquette typée existante ? (c'est-à-dire qu'ils existent dedans?)

Est-il raisonnablement possible d'implémenter un système de types dépendants à l'aide d'une raquette typée?


3
Je pense que vous devez clarifier un peu cette question: demandez-vous s'il existe des types dépendants dans Racket ou s'il est possible de les ajouter ? Si c'est le premier, alors non (selon les définitions les plus raisonnables des types dépendants), et si c'est le dernier, alors oui.
cody

1
Comme le note Cody, cette question n'est pas claire, et selon ce que vous vouliez dire, la réponse est soit un non pas très intéressant, soit un oui pas très intéressant. Veuillez étoffer cette question afin que nous sachions ce que vous demandez réellement.
Gilles 'SO- arrête d'être méchant'

Réponses:



-1

Je pense que "faire des types dépendants" en utilisant des contrats est déjà possible. Vérifiez https://docs.racket-lang.org/guide/contracts-struct.html et recherchez «Vérification des propriétés des structures de données».

Vous pourriez dire que cela simule plutôt l'effet que de l'intégrer dans le langage. Cependant, quelque part, vous devrez écrire le code, qui indique à l'interpréteur / compilateur quelles sont ces dépendances et dans Racket, vous pouvez le faire avec des contrats.


Je suis content de l'idée que les macros dans la raquette `` étendent le compilateur ''
hawkeye

@hawkeye Pourriez-vous répondre à cette question en implémentant des types dépendants avec des macros? (Je ne doute pas que ce soit possible.)
Zelphir Kaltstahl

L'argument pour savoir si les macros étendent le compilateur sont ici: stackoverflow.com/a/268091/15441 et vous pouvez mettre n'importe quel morceau de code dans une macro - de sorte que le code utilisé pour les types dépendants puisse être mis dans une macro. C'est ce que je disais.
hawkeye
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.