Преобразовать из обозначения стрелки

Я все еще пытаюсь получить представление о параллелях между обозначениями стрелок и семантикой классов типов стрелок, определенных в 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 без обозначения стрелки?

Ответы на вопрос(2)

Ваш ответ на вопрос