このエフェクトはとても単純なものだ。計算を遅延実行できるように、ある意味では包括的な
IO
エフェクトのように働く。
このエフェクトを実行するために2つのメソッドが利用できる。
runEval: Eff[U, A]
は計算を単純に実行する
attemptEval: Eff[U, Either[Throwable, A]]
は計算を実行し、発生するかもしれない
Throwable
をキャッチすることもできる
import org.atnos.eff._, all._, syntax.all._
delay(1 + 1).runEval.run
> 2