Convertir de notación de flecha

Todavía estoy tratando de entender los paralelismos entre la notación de flecha y la semántica de las clases de tipo Flecha definidas en Haskell. En particular,esta pregunta parece tener un ejemplo muy canónico de un pequeño contador escrito con notación de flecha:

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

¿Alguien puede mostrarme cómo convertir esto de nuevo en Haskell2010 sin notación de flecha?

Respuestas a la pregunta(2)

Su respuesta a la pregunta