使用purescript获取键盘事件

时间:2019-03-10 01:01:58

标签: purescript purescript-halogen

我想用purescript获取keydown事件,所以我使用了DomEvent。 这是我的代码。

main :: Eff (HA.HalogenEffects (console :: CONSOLE, timer :: T.TIMER)) Unit
main = HA.runHalogenAff do
  body <- HA.awaitBody
  cube <- runUI C.cubes unit body
  documenttarget <- liftEff $ window >>= document <#> DHT.htmlDocumentToEventTarget
  addEventListener (EventType "keydown") (eventListener test) true (documenttarget)

  H.liftEff $ T.setInterval (1000 / frameRate) do
    HA.runHalogenAff $ cube.query $ H.action C.Tick

当我尝试运行此代码时,出现这样的错误。

documenttarget <- liftEff $ window >>= document <#> DHT.htmlDocumentToEventTarget
Coudn't match type Eff with type Aff

我了解aff和eff,但是我是purescript的新手,所以我不确定该如何解决。 我该怎么办?

1 个答案:

答案 0 :(得分:0)

您传递给halogenRunAff的块是Aff块,因此其中的每一行都必须是Aff。但是liftEff会返回Eff。因此不匹配。

这就是编译器告诉您的:“无法将Eff与Aff匹配”。

要解决此问题,请将liftEff替换为liftAff

documenttarget <- liftAff $ window >>= document <#> DHT.htmlDocumentToEventTarget