Is it possible to manually update the value of a Behaviour? (Functional Reactive Programming, Threepenny)
I really hope I haven't gone down a dead-end here. I have a Behaviour that gives the currently selected Color, and the current mouse coordinates, then carries out a task when the mouse is clicked. That task involves looking at a list and then updating the values in that list, for it to be retrieved later. The fact that I can "store" the selected color gives me hope that storing a list can be done in a similar manner. I'm just at a dead end and not sure how to solve this. Would really appreciate some help.
-- There is a Blue button and a Red button on our UI. Whichever -- button was clicked last is our current color selection. colorRedSelected = const ColorRed <$ UI.click redButton colorBlueSelected = const ColorBlue <$ UI.click blueButton -- we combine both the above Events to create a new one that tells us the current selected color colorSelected = unionWith const colorRedSelected colorBlueSelected -- accumulate values for our Behaviour, starting with ColorRed selected by default colorMode <- accumB ColorRed modeEvent -- create a Behaviour mouseCoordinate <- stepper (0,0) $ UI.mousemove canvas -- want to start with the list [1,2,3,4], but this value should change later. -- I have 'never' here, as I don't know what else to put here yet. listState <- accumB ([1,2,3,4]) never -- Combine the Behaviours, we now have a tuple (chosenColorMode, mouseCoordinateTuple, savedList) let choices = (,,) <$> colorMode <*> mouseCoordinate <*> listState -- Apply the event (of the user clicking the canvas) to the Behaviour, -- creating a new Event that returns the above tuple when it fires makeChoice = choices <@ UI.click canvas onEvent makeChoice $ \(colorMode, (x,y), savedList) -> do ... -- in this block we use the savedList, and generate a newList. -- I want to update the choicePosition behaviour so that the newList -- replaces the old savedList.