2016-04-23 1 views
1

Dernièrement, j'apprends Racket, et j'ai quelques difficultés à comprendre la syntaxe "define-type". J'ai essayé le code suivant:L'utilisation de "define-type" dans Racket donne une erreur

#lang racket 
(define-type Num Number) 

mais il affiche le message d'erreur suivant:

define-type: unbound identifier in module in: define-type 

que quiconque peut me aider à traiter cette erreur? J'ai lu toute la documentation possible et il semble que cela devrait fonctionner.

Répondre

3

Il y a une raison à chaque programme de Racket commence par une ligne commençant par #lang: Racket est non seulement un langage de programmation, mais unécosystème des langages de programmation. Chaque fichier (et plus spécifiquement, chaque module) peut être dans son propre langage de programmation, et ils peuvent tous se parler facilement. Par défaut, Dr. Racket crée de nouveaux fichiers avec une ligne #lang racket en haut de la page. C'est le "langage Racket", mais ce n'est pas le seul langage fourni par le "système Racket", qui comprend en fait des dizaines de langages, certains pas très différents de #lang racket, d'autres presque sans rapport. Lorsque vous voulez utiliser Typed Racket, vous devez utiliser cette langue au lieu de #lang racket, qui est typée dynamiquement. Vous pouvez le faire en écrivant #lang typed/racket en haut de votre programme.

#lang typed/racket 
(define-type Num Number) 

Maintenant, toutes les fonctionnalités de Racket typé seront disponibles dans ce module.