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

时间:2017-02-01 20:38:53

标签: sml smlnj

我们说我有以下数据类型

datatype mytype = Foo | Bar | Baz

并且想要编写类似以下的函数

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

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

1 个答案:

答案 0 :(得分:2)

不幸的是,答案显然是“不”。已经多次提出“抽象模式”或“视图”的概念,但它是一个棘手的空间,并且没有任何提案完全令人满意(并且这也适用于其他语言,如Ocaml或Haskell)。