2016-04-23 32 views
1

最近、私はラケットを学び、 "定義型"の構文を理解するのが難しいです。私は、次のコードを試してみた:ラケットで "define-type"を使用するとエラーが発生する

#lang racket 
(define-type Num Number) 

を、それは次のエラー・メッセージを出力:誰もがこのエラーを扱う私を助けるかもしれない

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

を?私はすべての可能なドキュメントを読んで、それがうまくいかなければならないようです。

答えて

3

すべてのRacketプログラムが、#langで始まる行で始まる理由があります。Racketは単なるプログラミング言語ではなく、プログラミング言語のエコシステムです。すべてのファイル(具体的には、すべてモジュール)は、それ自身のプログラミング言語にすることができ、お互いに容易に話すことができます。

デフォルトでは、Dr. Racketは、先頭に#lang racket行の新しいファイルを作成します。これは「ラケット言語」ですが、実際には数十の言語を含む唯一の言語ではありません。#lang racketとあまり変わらないものもあれば、ほとんど関係のないものもあります。

Typed Racketを使用する場合、動的に入力される通常の#lang racketではなく、その言語を使用するようにオプトインする必要があります。これは、プログラムの先頭に#lang typed/racketと書いてください。

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

これで、Typed Racketのすべての機能がそのモジュール内で利用可能になりました。

関連する問題