Beginnen Sie einfach in Haskell, und ich versuche herauszufinden, wie Sie mehrere Variablen auf der Grundlage einer einzigen Bedingung am besten zuweisen können. Bis jetzt habe ich nur Tuples gepackt und ausgepackt. Gibt es einen besseren/mehr idiomatischen Weg?Mehrere Variablen in Haskell zuweisen
(var1, var2, var3) =
if foo > 0
then ("Foo", "Bar", 3)
else ("Bar", "Baz", 1)
Auch neugierig auf die Kosten für das Packen und Auspacken der Tupel. Wenn ich this richtig lese, scheint es, dass dies in Funktionen wegoptimiert wird, aber nicht sicher, ob das bei einer Zuweisung der Fall ist.
Sie könnten auch Listen verwenden, nur damit Sie es wissen. Sie könnten sogar Muster in größeren Chunks mit '(a: b: c: rest) = [1,2,3,4,5,6]' mit 'a = 1',' b = 2', 'c kombinieren = 3' und 'rest = [4,5,6]'. Außerdem ist dies nur in 'let'- und' where'-Anweisungen notwendig, nicht in der Basisausdrucksebene. – AJFarmar
Da wir in Haskell keine _mutable_ Variablen haben, nennen wir diese "Bindungen" oder "Definitionen" und nicht "Zuweisungen". Ihr Code sieht gut aus und ich mache mir keine Gedanken über die Kosten, es sei denn, das Profil zeigt darauf. Wenn Sie sich um dieses Tupel kümmern, wollen Sie nicht wissen, wie "Bar" 'zur Laufzeit dargestellt wird ... ;-) – chi