Я застрял на кодировании основной научной фантастики для игры, похожей на Марио, которую я пишу для развлечения. Вот код, который не анализируется:
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, которые подразумевают петли отрицательной обратной связи.
Я продолжаю искать справку по rec в обозначении Arrow "do" и всегда нахожу одни и те же примеры, которые подчеркивают правильный отступ кода. Но я делаю отступ с помощью Sublime, и интервал выглядит хорошо для меня. Есть ли другой способ? Скобки, фигурные скобки? Что-либо?
rec gs <- ..
иdgs <- ..
должны начинаться в одном столбце. Это правило отступа — все в блоке начинается с одного и того же столбца. И первый синтаксический элемент блока определяет, каким должен быть уровень отступа. Кстати, да, вы можете использовать фигурные скобки, чтобы избежать проблем с отступами -do \n x \n y
становитсяdo { x ; y }
. - person user2407038   schedule 01.04.2016dgs
в определенииgs
, а это значит, что ему нужно, чтобы его определение находилось внутриrec
. - person Jonathan Cast   schedule 01.04.2016