我被困在編寫一個馬里奧的主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'中。 –