Hooplの(順方向)書き換え関数のタイプは、次の関数で指定されmkFRewrite
ます。
mkFRewrite :: (FuelMonad m) =>
(forall e x.
n e x
-> f
-> m (Maybe (hoopl-3.8.6.1:Compiler.Hoopl.Dataflow.Graph n e x)))
-> FwdRewrite m n f
このm
タイプは、書き換え中にモナディック効果を使用できることを意味します。論文「Hoopl:データフロー分析と変換のためのモジュール式で再利用可能なライブラリ」は、セクション4.3「書き換え関数とクライアントのモナド」で同じことを述べています。
非Hooplモナディック効果が埋め込まれている書き換え関数の例を教えてもらえますか?たとえば、Stateモナドを使用したりIOを実行したりするリライター。