从Halogen获取“查询的无限类型推断”以进行查询/请求

时间:2018-11-10 10:18:39

标签: purescript purescript-halogen

在我的组件中:

data Query a = SetImageUrl Int String a

主要(应用)组件:

  eval :: Query ~> H.ParentDSL State Query ChildQuery ChildSlot Void m
  eval = case _ of
    HandleItemChange groupId (LIS.ActiveChanged selected) next -> do
      let apReq = AP.SetImageUrl groupId (imageUrl selected)
      _ <- H.query' CP.cp2 AvatarPictureSlot (H.request apReq)
      pure next

编译器说:

[1/1 InfiniteType] src/App.purs:85:57

  85        _ <- H.query' CP.cp2 AvatarPictureSlot (H.request apReq)
                                                              ^^^^^

  An infinite type was inferred for an expression:

    t0 -> t0

  while trying to match type t0 -> t0
    with type t0
  while checking that expression apReq
    has type (t0 -> t0) -> t1 t0
  in value declaration app

  where t0 is an unknown type
        t1 is an unknown type

我认为插槽和子路径都没问题,因为render函数可以编译并正常工作。

如何解决此错误?,我根据指南进行了多次检查,但我看不出有任何区别,并且编译器消息对我无济于事。

1 个答案:

答案 0 :(得分:0)

来自github的解决方案:

  _ <- H.query' CP.cp2 AvatarPictureSlot (H.action apReq)

对于不返回任何内容的查询,应使用H.action而不是H.request