Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

型注釈

💡 お知らせ: このドキュメントはAIによって翻訳されています。表現に違和感がある場合は、原文(英語)を参照するか、翻訳にご協力ください。

Flix はローカル型推論をサポートしていますが、式や let 束縛にその型を注釈しておくと便利な場合があります。このような注釈を型注釈(Type ascription)と呼びます。型注釈によって式の型を変えることはできず、型安全性を破るために使うこともできません。

型注釈は式の後ろに置くことができます:

(("Hello" :: "World" :: Nil) : List[String])

ただし、他の式と区別するために括弧で囲む必要があります。

let 束縛に対しては、括弧なしで型注釈を置くこともできます:

let l: List[String] = "Hello" :: "World" :: Nil

カインド注釈

Flix はカインド注釈(Kind ascription)もサポートしています。型注釈が_式_の_型_を指定するのに対して、カインド注釈は_型_の_カインド_を指定します。

カインド注釈は型パラメータに対して使うことができます。例えば:

def fst1[a: Type, b: Type](p: (a, b)): a = let (x, _) = p; x

ここでは、2 つの型パラメータ ab の_カインド_が Type であることを指定しています。このようなカインドは推論できるため、通常は指定する必要はありません。

代数的データ型にカインド注釈を付けることもできます:

enum A[t: Type] {
    case A(t, t)
}

トレイトにも付けられます:

trait MyTrait[t: Type] {
    // ...
}

カインド注釈は通常、高カインド型に対してのみ使用します。