2016-04-23 9 views
1

In letzter Zeit lerne ich Racket, und ich habe einige Schwierigkeiten mit dem Verständnis der "Define-Type" -Syntax. Ich habe den folgenden Code versucht:Die Verwendung von "define-type" in Racket gibt einen Fehler

#lang racket 
(define-type Num Number) 

aber es gibt die folgende Fehlermeldung:

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

jemand Mai helfen Sie mir diesen Fehler zu tun? Ich habe alle möglichen Dokumente gelesen und es scheint, als müsste es funktionieren.

Antwort

3

Es gibt einen Grund jedes Racket Programm mit einer Linie mit #lang beginnend beginnt: Racket ist nicht nur eine Programmiersprache, sondern ein Ökosystem von Programmiersprachen. Jede Datei (und genauer gesagt jedes Modul) kann in seiner eigenen Programmiersprache sein, und sie können alle problemlos miteinander kommunizieren.

Standardmäßig erstellt Dr. Racket neue Dateien mit einer #lang racket Zeile an der Spitze. Dies ist die "Racket-Sprache", aber es ist nicht die einzige Sprache, die vom "Racket-System" zur Verfügung gestellt wird. Es enthält Dutzende von Sprachen, einige davon nicht sehr verschieden von #lang racket, andere fast völlig unabhängig.

Wenn Sie Typed Racket verwenden möchten, müssen Sie anstelle der normalen #lang racket, die dynamisch typisiert ist, die Verwendung dieser Sprache aktivieren. Sie können dies tun, indem Sie #lang typed/racket an der Spitze Ihres Programms schreiben.

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

Nun sind alle Funktionen von typisierten Racket wird in diesem Modul zur Verfügung stehen.