ich ein Tutorial lese, die das folgende Beispiel verwendet (die ich etwas verallgemeinern werden):Bei der Destrukturierung von Tupeln in Haskell, wo können die Elemente verwendet werden?
f :: Foo -> (Int, Foo)
...
fList :: Foo -> [Int]
fList foo = x : fList bar
where
(x, bar) = f foo
Meine Frage liegt in der Tatsache, dass es scheint, dass Sie zu x
und bar
, namentlich beziehen, außerhalb das Tupel, wo sie erhalten werden. Dies scheint in anderen Sprachen wie eine destrukturierende Parameterliste zu funktionieren, wenn meine Vermutung richtig ist. (Mit anderen Worten, ich musste folgendes nicht tun :)
Bin ich richtig über dieses Verhalten? Ich habe es noch nie in den Tutorials/Büchern gesehen, die ich gelesen habe. Kann mir jemand mehr Infos zu dem Thema geben?
Bearbeiten: Kann irgendetwas (Listen, Arrays, etc.) in ähnlicher Weise destrukturiert werden, oder können Sie das nur mit Tupeln tun?
Wenn Sie in diesem Tutorial eventuell nicht auf eine Erklärung des Mustervergleichs stoßen, möchten Sie vielleicht eine ausführlichere Erklärung von Haskell hinzufügen. Pattern Matching ist grundlegend und wichtig für die Sprache. –