Почему мы должны использовать поведение в FRP

Я учу реактивный банан. Чтобы понять библиотеку, я решил реализовать фиктивное приложение, которое бы увеличивало счетчик всякий раз, когда кто-то нажимает кнопку.

Я использую библиотеку пользовательского интерфейса Gtk, но это не имеет отношения к объяснению.

Вот очень простая реализация, которую я придумал:

import Graphics.UI.Gtk
import Reactive.Banana
import Reactive.Banana.Frameworks

makeNetworkDescription addEvent = do
    eClick <- fromAddHandler addEvent
    reactimate $ (putStrLn . show) <$> (accumE 0 ((+1) <$ eClick))

main :: IO ()
main = do
    (addHandler, fireEvent) <- newAddHandler
    initGUI
    network <- compile $ makeNetworkDescription addHandler
    actuate network
    window <- windowNew
    button <- buttonNew
    set window [ containerBorderWidth := 10, containerChild := button ]
    set button [ buttonLabel := "Add One" ]
    onClicked button $ fireEvent ()
    onDestroy window mainQuit
    widgetShowAll window
    mainGUI

Это просто выводит результат в оболочку. Я пришел к этому решению, читаястатья&nbsp;Генрих Апфельмус. Обратите внимание, что в моем примере я не использовал ни одногоBehavior.

В статье приведен пример сети:

makeNetworkDescription addKeyEvent = do
    eKey <- fromAddHandler addKeyEvent
    let
        eOctaveChange = filterMapJust getOctaveChange eKey
        bOctave = accumB 3 (changeOctave <$> eOctaveChange)
        ePitch = filterMapJust (`lookup` charPitches) eKey
        bPitch = stepper PC ePitch
        bNote = Note <$> bOctave <*> bPitch
    eNoteChanged <- changes bNote
    reactimate' $ fmap (\n -> putStrLn ("Now playing " ++ show n))
               <$> eNoteChanged

Пример показываетstepper&nbsp;это превращаетEvent&nbsp;вBehavior&nbsp;и возвращаетEvent&nbsp;с помощьюchanges, В приведенном выше примере мы могли бы использовать толькоEvent&nbsp;и я думаю, что это не имело бы никакого значения (если я чего-то не понимаю).

Так может кто-то может пролить свет на то, когда использоватьBehavior&nbsp;и почему? Должны ли мы преобразовать всеEventкак можно скорее?

В моем маленьком эксперименте я не вижу, гдеBehavior&nbsp;может быть использован.

Спасибо