OCaml äquivalent zu Haskell @ in Mustervergleich (auch als Muster bezeichnet)

8

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?

    
APerson 08.11.2017, 13:08
quelle

2 Antworten

16

Sie können as :

verwenden %Vor%     
Étienne Millon 08.11.2017, 13:10
quelle
11

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.

%Vor%     
ivg 08.11.2017 13:26
quelle

Tags und Links