聞いてくてださい、質問です。

未だに Arrow がよく分からないのです。
再帰を表現するために ArrowLoop クラスがあるそうなのですが、
具体的にはどのようにして再帰を作るのでしょうか。

例えば階乗を計算する Int -> Int 型の関数を loop 関数を使って作るとしたら、
どのような式になるでしょうか。