假设我有一个事件触发器,我想在触发时做两件事.首先,我希望它更新某些行为的价值.其次,如果满足其他条件,我希望它使用更新的行为值触发另一个事件send_off.以代码形式表示,假设我有
trigger :: Event b
trigger = ...
updateFromTrigger :: b -> (a -> a)
updateFromTrigger = ...
conditionFromTrigger :: b -> Bool
conditionFromTrigger = ...
behavior :: Behavior a
behavior = accumB initial_value (updateFromTrigger <$> trigger)
send_off :: Event a
send_off = ?????? (filterE conditionFromTrigger trigger)
Run Code Online (Sandbox Code Playgroud)
然后问题是:我把什么放在?????? 以便send_off发送最新的行为值,我的意思是包含刚刚应用于它的触发器更新的值.
不幸的是,如果我理解正确,行为的语义是这样的,更新的值不会立即可用,所以我这里唯一的选择是复制工作并重新计算行为的更新值,以便我可以立即使用它在另一个事件中,即填写?????? 喜欢的东西
send_off =
flip updateFromTrigger
<$>
behavior
<@>
filterE conditionFromTrigger trigger
Run Code Online (Sandbox Code Playgroud)
现在,有一种感觉我可以通过使用Discrete而不是Behavior来立即使我 …