私はまだ、アロー表記と Haskell で定義されたアロー型クラスのセマンティクスとの類似点を理解しようとしています。特に、この質問には、矢印表記で書かれた小さなカウンターの非常に標準的な例があるようです。
counter :: ArrowCircuit a => a Bool Int
counter = proc reset -> do
rec output <- returnA -< if reset then 0 else next
next <- delay 0 -< output+1
returnA -< output
これを矢印表記なしで Haskell2010 に変換する方法を教えてもらえますか?