bekam Ich stecken auf die Codierung der wichtigsten SF für ein Mario wie Spiel, das ich zum Spaß schreibe. Hier ist der Code, der nicht analysieren:"parse Fehler bei der Eingabe '<-'" in einem Yampa-Programm
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
Und das ist der Code, der analysiert und führt 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
Bitte beachte, dass ich mit Kommentaren beiden Versionen in dem gleichen Code-Block erhalten zu machen Der Unterschied ist sichtbarer.
Im Prinzip möchte ich eine negative Rückkopplungsschleife mit einer kleinen Verzögerung erzeugen, so dass ich das umgewandelte Spiel umgehen kann und keine Funktionen wechseln muss. Der Ausgang geht auf einen „zeichnen“ SF wie folgt aus:
mainSF = parseInput >>> master_combine >>> draw
In der ersten Version i versuchen Zwischen Namen gs zu verwenden (Spielzustand) und GDs (verzögerte Spielzustand). Der Fehler wird in der Zeile angezeigt, die mit dgs beginnt.
In der zweiten Version, die für mich funktioniert, musste ich den gesamten SF in einer Zeile schreiben.
Ich möchte die erste Version des Codes verwenden, weil ich die Funktionalität erweitern muss, indem ich zusätzliche SFs verbinde, die negative Rückkopplungsschleifen implizieren.
Ich suche nach Hilfe auf Rec in Arrow "Do" Notation und ich finde immer die gleichen Beispiele, die richtigen Code Einrückung betonen. Aber ich ziehe mit Sublime ein und der Abstand sieht für mich gut aus. Gibt es eine andere Art und Weise ? Klammern, geschweifte Klammern? Etwas?
' Rec gs <- .. 'und' dgs <- .. sollten in derselben Spalte beginnen. Das ist * die * Einrückungsregel - alles in einem "Block" beginnt in derselben Spalte. Und das erste syntaktische Element des Blocks bestimmt, wie hoch der Eindruck sein soll. Nebenbei, ja, Sie können geschweifte Klammern verwenden, um Einrückungsprobleme zu vermeiden - 'do \ n x \ n y' wird zu' do {x; y} '. – user2407038
@ user2407038: Er möchte 'dgs' in der Definition von' gs' verwenden, was bedeutet, dass er seine Definition innerhalb des 'rec' braucht. –