在 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。
假设我有以下数据类型
datatype mytype = Foo | Bar | Baz
并想编写如下函数
fun myfun ((Foo|Bar), (Foo|Bar)) = something
| myfun (Baz, _) = somethingelse
| ...
有没有办法为模式 Foo|Bar
创建一个别名,这样我就可以把它写出来,避免重复自己?
不幸的是,答案很简单"no"。 "abstract patterns" 或 "views" 的概念已被多次提出,但它是一个棘手的 space,并且没有任何提议能够完全令人满意(这适用于其他语言,如 Ocaml 或 Haskell。