在 SML 中,是否可以为模式定义别名?

In SML, is it possible to define an alias for a pattern?

假设我有以下数据类型

datatype mytype = Foo | Bar | Baz

并想编写如下函数

fun myfun ((Foo|Bar), (Foo|Bar)) = something
|   myfun (Baz, _) = somethingelse
|   ...

有没有办法为模式 Foo|Bar 创建一个别名,这样我就可以把它写出来,避免重复自己?

不幸的是,答案很简单"no"。 "abstract patterns" 或 "views" 的概念已被多次提出,但它是一个棘手的 space,并且没有任何提议能够完全令人满意(这适用于其他语言,如 Ocaml 或 Haskell。