>>271
>再帰を表現するために ArrowLoop クラスがあるそうなのですが、
再帰というより、ループのある回路を実現する
モナドでいうMonadFixみたいなもの

>例えば階乗を計算する Int -> Int 型の関数を loop 関数を使って作るとしたら、
それは例題がおかしい。やろうとしてることがArrowと関係ない
一応、関数アローを無理矢理使って書けなくもないけど

fac :: Int -> Integer
fac n = loop f n
 where
  f (k, g) = (g k, \x -> if x <= 0 then 1 else fromIntegral x * g (x-1))