Рассмотрим следующий код:Как работает `valueB`? Он всегда возвращает одно и то же значение?
module Main where
import Control.Event.Handler
import Reactive.Banana
import Reactive.Banana.Frameworks
main :: IO()
main = do
(addHandler, fire) <- newAddHandler
compile (network addHandler) >>= actuate
fire "fire one"
fire "fire two"
network :: AddHandler String -> MomentIO()
network addHandler = do
fireEvent <- fromAddHandler addHandler
behavior <- stepper "initial stepper value" fireEvent
behaviorValue <- valueB behavior
reactimate $ putStrLn . (\v -> "fire input: " ++ show v) <$> fireEvent
reactimate $ print behaviorValue <$ fireEvent
Выход из этой программы:
fire input: "fire one"
"initial stepper value"
fire input: "fire two"
"initial stepper value"
Могу ли я с помощью valueB
правильно? Если нет, что я делаю неправильно? Какова цель valueB
и когда я должен ее использовать?
В конце концов я понял, что 'valueB' находится в разделе« более высокого порядка »документации по какой-либо причине и, вероятно, чаще всего встречается в сочетании с другими операциями более высокого порядка, такими как' switchB'. Это верно? – Buttons840
@ Buttons840 Да, точно. :-) –