Ich arbeite an einigen Code für ein Kartenspiel:Ist Schreiben Helferfunktionen für die staatlichen Übertragungsstil idiomatischen in Haskell?
splitCards_ (x:xs) (a,b,c) | isGold x = splitCards xs (a:x,b,c)
| isAction x = splitCards xs (a,b:x,c)
| isVP x = splitCards xs (a,b,c:x)
splitCards_ [] (a,b,c) = (a,b,c)
splitCards xs = splitCards_ xs ([],[],[])
Wesentlichen eine Liste der Karten nehmen und es in drei verschiedene Listen aufzuteilen von der Art der Karte abhängig. splitCards_
stellt Statusaktualisierungen durch rekursiv es die Parameter zu aktualisieren, dann splitCards
(die eigentliche Funktion) verwendet wird, um immer die Berechnung mit den drei Listen von bestimmten Arten von Karten leer zu beginnen.
Ich glaube, das heißt State-Passing-Stil, und ich bin mir ziemlich sicher, dass das vollkommen idiomatische ist, aber ich bin mehr besorgt mit der Tatsache, dass ich eine Hilfsfunktion splitCards_
definieren müssen, um dies zu arbeiten wie ich will. Erschafft Hilfsfunktionen wie diese idiomatische Haskell? Gibt es eine sauberere Möglichkeit, dies zu schreiben? Sind Benennungskonventionen vorzuziehen, nur einen Unterstrich am Ende des Namens der Hilfsfunktion anzubringen?