2014-10-17 3 views
0

я нашел себя писать такого рода вещи:Элегантный способ написать шаблоны

myFnc (MyDataType0 x y z) = someFunction0 (MyDataType0 x y z) 
myFnc (MyDataType1 x y) = someFunction1 (MyDataType1 x y) 
... 

т.е. мне нужно сопоставление с образцом некоторых конструкторах данных, а затем использовать весь экземпляр. Мой текущий подход - сопоставить тип данных, получить все его поля, а затем восстановить его в теле функции. Есть ли способ лучше?

+0

Не вы лучше с 'myFnc (MyDataType0 х у г) = SomeFunction х у z' и т.д.? –

+0

@TomEllis, Ну, я могу переписать его, но я не вижу причин для этого. Логически, 'someFunction0' должен брать объекты типа' MyDataType0'. – Mark

+3

Но 'MyDataType0' не является типом, это конструктор. Что делает 'someFunction0', когда передано значение конструктора' MyDataType1'? –

ответ

9

Вы хотите @:

myFnc [email protected]{} = someFunction0 d 
... 
+9

'd @ MyDataType0 {}' еще лучше. –

+1

Интересно, я не знал, что вы можете использовать эту нотацию без названных полей. Ред. –

Смежные вопросы