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プログラミングに関して一から初心者が学べるように、複数の記事を掲載しています。
    
          
          
          
            
  
  
  