我一直在为我正在写的一款马里奥之类的游戏编写主要的 SF。这是不解析的代码:
master_combine = proc pi -> do
-- rec cgg <- player_update >>> (initial_game --> bounds_updater) >>> iPre initial_game -< (pi, cgg)
rec gs <- player_update >>> (initial_game --> bounds_updater) -< (pi, dgs)
dgs <- iPre initial_game -< gs
returnA -< gs
这是解析和执行正常的代码:
master_combine = proc pi -> do
rec cgg <- player_update >>> (initial_game --> bounds_updater) >>> iPre initial_game -< (pi, cgg)
-- rec gs <- player_update >>> (initial_game --> bounds_updater) -< (pi, dgs)
-- dgs <- iPre initial_game -< gs
returnA -< cgg
请注意,我在同一个代码块中保留了两个版本并带有注释,以使差异更加明显。
原则上,我想创建一个带有小延迟的负反馈循环,这样我就可以传递转换后的游戏而不必切换功能。输出到这样的“绘制”SF:
mainSF = parseInput >>> master_combine >>> draw
在第一个版本中,我尝试使用中间名称 gs(游戏状态)和 dgs(延迟游戏状态)。错误在以 dgs 开头的行上发出信号。
在适合我的第二个版本中,我必须将整个 SF 写在一行中。
我想使用代码的第一个版本,因为我需要通过连接暗示负反馈循环的附加 SF 来扩展功能。
我一直在用箭头“do”表示法寻找关于 rec 的帮助,我总是找到强调正确代码缩进的相同示例。但我用 Sublime 缩进,间距对我来说很好。还有其他方法吗?括号,大括号?任何事物?