【发布时间】:2017-03-28 21:24:32
【问题描述】:
我正在尝试修改此示例https://github.com/slamdata/purescript-halogen/blob/v0.12.0/examples/deep-peek/src/Main.purs#L58(相关部分复制如下),但不是偷看孙子,我只想偷看孩子,或者在这种情况下是peekList。我还想将插槽类型作为参数保留在peekList 的 peek 函数中。
peek :: forall a. H.ChildF ListSlot ListQueryP a -> H.ParentDSL State (ListStateP g) Query ListQueryP g ListSlot Unit
peek = coproduct peekList peekTicker <<< H.runChildF
peekList :: forall a. ListQuery a -> H.ParentDSL State (ListStateP g) Query ListQueryP g ListSlot Unit
peekList _ =
-- we're not actually interested in peeking on the list.
-- instead of defining a function like this, an alternative would be to use
-- `(const (pure unit))` in place of `peekList` in the `coproduct` function
pure unit
peekTicker :: forall a. H.ChildF TickSlot TickQuery a -> H.ParentDSL State (ListStateP g) Query ListQueryP g ListSlot Unit
peekTicker (H.ChildF _ (Tick _)) = H.modify (\st -> { count: st.count + 1 })
peekTicker _ = pure unit
我怎样才能真正偷看peekList而不丢失槽参数?
我试过删除H.runChildF:
peek = coproduct peekList (const (pure unit))
然后将槽参数添加回peekList:
peekList :: forall a. H.ChildF ListSlot ListQuery a -> H.ParentDSL State (ListStateP g) Query ListQueryP g ListSlot Unit
但是在peek 中,我收到错误“在尝试将 ChildF ListSlot 类型与 Coproduct (ChildF ListSlot ListQuery) 类型匹配时,无法将 ChildF 类型与 Coproduct 类型匹配”
如果我只是尝试使用peekList 而不是peek,我会收到错误“在尝试匹配类型 ChildF ListSlot(Coproduct ListQuery (ChildF TickSlot TickQuery)) 类型为 ChildF ListSlot ListQuery"
任何帮助将不胜感激,谢谢!
【问题讨论】:
标签: purescript halogen