In Haskell kann ich beim Mustervergleich% ce_de% verwenden, um die gesamte Struktur in einem Muster zu erhalten. (Zum einfacheren Googeln wird diese Struktur als as-Muster bezeichnet.)
Zum Beispiel zerlegt @
eine Liste in einen Kopf und einen Schwanz; Ich kann auch die gesamte Liste mit x:xs
bekommen.
Hat OCaml so etwas?
Lassen Sie mich Etiennes Antwort ein wenig mit einigen Beispielen erweitern:
%Vor% Wenn Sie <pattern> as <name>
schreiben, ist die Variable <name>
an das gesamte Muster auf der linken Seite gebunden, mit anderen Worten, der Bereich von as
erstreckt sich so weit wie möglich nach links (technisch gesprochen as
hat eine niedrigere Priorität als Konstruktoren, dh die Konstruktoren binden enger). Im Fall des Deep-Pattern-Abgleichs müssen Sie möglicherweise den Begrenzungsbereich durch Klammern begrenzen, z. B.
Tags und Links haskell pattern-matching ocaml