Localized V2 rewrite for this language is in progress. Showing English-first content for now.

カスタムエフェクト

独自のエフェクトを定義し、関数シグネチャで要求を伝播します。

カスタムエフェクト

Sounio では、ドメイン固有の副作用を表すために独自のエフェクトを宣言できます。

エフェクトを宣言する

エフェクトは名前付きの操作集合です:

effect Fail {
    fn fail(msg: string) -> !
}

エフェクトを使う

エフェクト操作は通常の関数のように呼び出し、シグネチャでエフェクトを宣言します:

fn might_fail() with Fail {
    Fail.fail("something went wrong")
}

要求を伝播する

呼び出し側もエフェクトを宣言する必要があります:

fn main() with Fail {
    might_fail()
}

忘れるとコンパイラはエラーを出します:

fn main() {
    might_fail()  // ERROR: Fail effect not declared / handled
}

仕様メモ: エフェクトハンドラ

言語設計には代数的エフェクトハンドラ(resumption、解釈など)が含まれます。古いドキュメントに handle / resume 構文が出てきたら、現在のコンパイラモードが明示的にサポートしていない限り 仕様レベル として扱ってください。

次へ