2017-02-01 7 views
2

Скажем, у меня есть следующий тип данныхВ SML можно определить псевдоним для шаблона?

datatype mytype = Foo | Bar | Baz 

и хотите написать функцию вроде следующего

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

Есть ли способ создать псевдоним для шаблона Foo|Bar, так что я могу написать это один раз и избежать повторения себя?

+0

Вы можете создать очень легкий препроцессор, который позволяет использовать простые сокращения, которые заменяются их значениями до компиляции. –

ответ

2

Ответ прост: «нет», к сожалению. Понятие «абстрактные шаблоны» или «взгляды» было предложено много раз, но это сложное пространство, и ни одно предложение никогда не было полностью удовлетворительным (и это относится к другим языкам, таким как Ocaml или Haskell).