Tuplas tienen "," y las variantes tienen Ctor args ..estos son constructores, crean cosas.
Los patrones son destructores, los desgarran.
Son conceptos duales.
Para poner esto más enérgicamente: la noción de una tupla o variante no puede describirse simplemente por su constructor: se requiere el destructor o el valor que ha hecho es inútil. Son estas descripciones duales las que definen un valor.
Generalmente pensamos en constructores como datos y destructores como flujo de control. Los destructores variantes son ramas alternativas (una de muchas), los destructores de tuplas son hilos paralelos (todos muchos).
El paralelismo es evidente en operaciones como
(f * g) . (h * k) = (f . h * g . k)
si se piensa en el control fluye a través de una función, tuplas proporcionan una manera de dividir un cálculo en hilos paralelos de control.
Visto de esta manera, las expresiones son formas de componer tuplas y variantes para crear estructuras de datos complicadas (piense en una AST).
Y las coincidencias de patrones son formas de componer los destructores (de nuevo, piense en un AST).
"experiencial". Buena palabra. :-) –