榆树递归映射?

时间:2015-02-25 19:29:24

标签: recursion functional-programming signals elm

我正在尝试在Elm中编写一个生命克隆游戏,我对如何绘制更新板感到困难。

我将名为(List (List Int))

的变量中的单元格表示为gameBoardList

我使用此功能更新电路板

transformBoardList : List (List Int) -> List (List Int)
transformBoardList l = nextVertRow l 0

我可以将gameBoardList转换为表单并将其作为元素绘制,甚至可以将transformBoardList函数应用于该表单而不会出现问题。

我不明白的是如何让我的电路板不断更新。我已经检查了过去的依赖映射,但它看起来像我需要某种递归映射,所以我可以继续应用transformBoardList每次更新

我是如何实现这一目标的?

1 个答案:

答案 0 :(得分:1)

如果你有一些游戏状态和更新功能,你可以使用这些和foldp以及时间自动收报机来定期更新游戏。

startState = gameBoardList -- for example
update = transformBoardList -- for example
view = .. -- you said you had this too

input = Time.every second -- a time ticker
state = Signal.foldp (\_ s -> update s) startState input
main = view <~ state