digamos que tenemos esta declaración de tipo:juego varios constructores de tipos de datos a la vez
data D a = A a | B a | C a | D a | E a | F a
y queremos definir una función sobre ella que divide los constructores de datos en 2 juegos. Sería bueno escribir algo así:
g x | x `is` [A,B,C] = 1
| x `is` [D,E,F] = 2
en lugar de hacer coincidir cada constructor por separado.
¿Hay alguna manera de lograr esto? Miré uniplate pero no pude encontrar una manera de hacerlo.
Encontré la misma solución. El problema es con los literales de cadena. Será mejor si podemos hacer coincidir contra '[A, B, C]' como en el ejemplo que di. –
@djv: ver la actualización. – kennytm
Está mejorando, pero ¿y si quiero que funcione para constructores con campos numéricos diferentes? –