Pergunta

I'm just trying to get started with FRP and threepenny-gui, and I'm not sure how to do even basic things.

Suppose I have a function defined as so

timesClicked :: Element -> Behavior Int
timesClicked elem = accumulate (+) 0 (1 <$ UI.click elem)

and I want to display the value of the Behavoir on the page.

I can do something like

setup :: Window -> UI ()
setup rootWindow = void $ do
  button <- UI.button #+ [ string "Clickity!" ]
  output <- UI.p
  getBody rootWindow #+
    map element [ button, output ]

  let clicks = timesClicked loginButton

Edit: Working full code here.

I don't know how to attach the behavior into the output.

Foi útil?

Solução

Aha, I've got it figured out now, and am leaving this as an example for anyone else.

timesClicked elem = accumB (0::Int) ( (+1) <$ UI.click elem)


setup :: Window -> UI ()
setup rootWindow = void $ do
  button <- UI.button #+ [ string "Clickity!" ]
  output <- UI.p
  getBody rootWindow #+
    map element [ button, output ]

  clicks <- timesClicked button
  -- sink :: ReadWriteAttr x i o -> Behavior i -> UI x -> UI x
  element output # sink text (show <$> clicks)

If anyone wants to follow along with my progress, I've put it on github.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top