Я пытаюсь обернуть голову в сопрограммы в PureScript, точнее, сейчас я пытаюсь применить какой-то фильтр к производителю.
Рассмотрим следующий код, который является просто генератором случайных чисел (производитель), подключенным к регистратору (потребителю):
producer :: Producer Int Aff Int
producer = produceAff go
where
go emitter = do
n <- liftEffect $ randomInt 0 1000
emit emitter n
when (n > 900) do
close emitter n
delay (Milliseconds 250.0)
go emitter
logNumbers :: Consumer Int Aff Int
logNumbers = forever $ consumer \n -> do
liftEffect $ logShow n
pure Nothing
main :: Effect Unit
main = void
$ runAff (either logShow \lastN -> log ("output: " <> (show lastN)))
$ runProcess
$ (producer $$ logNumbers)
Не касаясь кода producer
и logNumbers
как я могу предотвратить достижение некоторых чисел logNumbers
?например, отменить все числа ниже 500.