【发布时间】:2011-12-12 14:49:52
【问题描述】:
我们有这样的代码:
guiState :: Discrete GuiState
guiState = stepperD (GuiState []) $
union (mkGuiState <$> changes model) evtAutoLayout
evtAutoLayout :: Event GuiState
evtAutoLayout = fmap fromJust . filterE isJust . fmap autoLayout $ changes guiState
您可以看到 evtAutoLayout 馈入 guiState 馈入 evtAutoLayout——所以那里有一个循环。这是故意的。汽车 layout 调整 gui 状态,直到达到平衡,然后 它返回 Nothing ,所以它应该停止循环。新的模型变化 当然可以重新开始。
但是,当我们将这些放在一起时,我们会在 编译函数调用。即使autoLayout = Nothing,编译时还是会导致栈溢出。
如果我删除了 guiState 中的联合调用并删除了 evtAutoLayout 图片...
guiState :: Discrete GuiState
guiState = stepperD (GuiState []) $ mkGuiState <$> changes model
效果很好。
有什么建议吗?
【问题讨论】:
标签: haskell reactive-programming reactive-banana