Sto lavorando su un codice per un gioco di carte:Sta scrivendo le funzioni di supporto per lo stile di passaggio di stato idiomatico 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 ([],[],[])
In sostanza, prendendo un elenco di schede, e dividendolo in tre diverse liste a seconda del tipo di scheda. splitCards_
rappresenta gli aggiornamenti di stato aggiornando in modo ricorsivo i suoi parametri, quindi splitCards
(la funzione effettiva) viene utilizzato per avviare sempre il calcolo con i tre elenchi di tipi specifici di schede vuote.
Credo che questo si chiami stile di passaggio dello stato, e sono abbastanza sicuro che sia perfettamente idiomatico, ma sono più preoccupato del fatto che devo definire una funzione di supporto splitCards_
per far funzionare questo modo che voglio La creazione di funzioni di supporto come questo Haskell idiomatico? C'è un modo più pulito per scrivere questo? Esistono convenzioni di denominazione preferibili semplicemente mettendo un trattino basso alla fine del nome della funzione di aiuto?