Appena iniziato in Haskell, sto cercando di capire il modo migliore per assegnare più variabili in base a una singola condizione. Finora ho appena fatto le valigie e disimballato Tuples. C'è un modo migliore/più idiomatico?Assegnazione di più variabili in Haskell
(var1, var2, var3) =
if foo > 0
then ("Foo", "Bar", 3)
else ("Bar", "Baz", 1)
Inoltre, sono curioso del costo dell'imballaggio e del disimballaggio delle tuple. Se sto leggendo correttamente this, sembra che questo venga ottimizzato nelle funzioni, ma non è sicuro se questo è il caso di un incarico.
È possibile utilizzare anche elenchi, solo per quello che sai. Si può anche modellarlo abbinandolo in più pezzi usando '(a: b: c: rest) = [1,2,3,4,5,6]' dove 'a = 1',' b = 2', 'c = 3', e 'rest = [4,5,6]'. Inoltre, questo è necessario solo nelle istruzioni 'let' e' where', non nel livello di espressione di base. – AJFarmar
Dato che non abbiamo variabili _mutable_ in Haskell, chiamiamo queste "associazioni" o "definizioni" piuttosto che "assegnazioni". Il tuo codice sembra a posto, e non mi preoccuperei del costo a meno che punti di profilazione. Inoltre, se ti preoccupi di questa tupla, non vuoi sapere come '" Bar "' è effettivamente rappresentata in fase di esecuzione ... ;-) – chi