我被困在编写一个马里奥的主SF上,就像我写作的乐趣一样。 这里是不解析代码:在一个Yampa程序中输入'< - '“时出现”解析错误“
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
这是一个分析和执行OK代码:
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来扩展功能。
我一直在Arrow“do”表示法中搜索rec的帮助,我总是发现强调正确代码缩进的相同示例。但是我缩进Sublime,间距对我来说看起来很好。有另一种方法吗?括号,大括号?什么?
' rec gs < - ..'和'dgs < - ..'应该从同一列开始。这是*缩进规则 - “块”中的所有内容都始于同一列。而块的第一个语法元素决定了缩进级别应该是什么。顺便说一句,是的,你可以使用花括号来避免缩进问题 - 'do \ n x \ n y'变成'do {x; y}'。 – user2407038
@ user2407038:他想在'gs'的定义中使用'dgs',这意味着他需要将其定义放在'rec'中。 –