アンリアる! Verse入門編 ~対話形式で学ぶUEFN~
BOOTHでUEFN Verse入門書を販売していますUEFN上でVerseを使って開発するために必要となる基礎知識を一冊の本にまとめた本です。 対話形式によるわかりやすい説明を目指しました。無料の試し読みも可能ですので、ぜひ読んでみてください!
[UEFN] はじめてのVerseプログラミング – 関数のエフェクト

Verse言語の関数には、関数の動作を指定できる エフェクト と呼ばれるものがあります。
エフェクトには、加算エフェクト排他的エフェクト の2種類があります。
加算エフェクトは1つの関数に対して複数追加できますが、排他的エフェクトは最大1つまでしか追加できません。 エフェクトは指定子として定義時に指定します。

代表的なエフェクトの種類と効果を次に示します。

エフェクト エフェクトの種類 効果
suspends 加算エフェクト 関数の実行が非同期であることを示す。suspends 式を用いることにより、関数を終了せずに一時停止できる関数。
decides 加算エフェクト 失敗する可能性がある関数。失敗コンテキスト内で関数を呼び出す必要がある。
converges 排他的エフェクト 関数が確実に実行完了することを保証する。変数の値が変更されるなど、関数実行による副次的な効果がない。
computes 排他的エフェクト 関数が確実に実行完了することを保証しない。関数の入力が同じ場合に、同じ出力を返す関数。
varies 排他的エフェクト 関数の入力が同じ場合に、同じ出力を返すことを保証しない関数。関数によって実行される処理をロールバックできる。
transacts 排他的エフェクト 変数の値を読み書きできることを可能とする関数。関数によって実行される処理をロールバックできる。

ここでは、エフェクト decides を利用した関数の例を示します。
この関数は、引数 Value に指定した整数が0よりも大きい場合に失敗します。
失敗する可能性のある関数は、失敗時に処理をロールバックできる必要があるため、エフェクト varies も追加しています。

IsPositive(Value : int)  : void = Value > 0

この関数は、失敗コンテキストで実行する必要があります。
失敗する可能性のある関数は、引数の前後を () ではなく [] で囲う必要があることに注意しましょう。

IsPositive[5]   # 失敗コンテキストで実行していないため、コンパイルエラーになる。

if (IsPositive[5]):
    Print("Positive")

以上が、関数のエフェクトです。

その他、UEFNのVerseに関する情報は、以下の記事にまとめています。

[UEFN] はじめてのVerseプログラミング
VerseはEpic Gamesが開発したプログラミング言語で、Fortniteクリエイターが仕掛けをカスタマイズするときに使用できます。 Fortnite用のUnreal Engine(UEFN)で独自のゲームを作成するときに使用できます。 Colory GamesのTech Blogでは、Verseプログラミングに関して一から初心者が学べるように、複数の記事を掲載しています。