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