En general, diría que no, no es posible. Sin embargo, si está tratando de resolver el problema práctico de desenvolver y envolver por todos lados (especialmente común con los tipos nuevos), a menudo defino una función mapf f (Type val) = Type (f val)
, análoga a fmap, y luego no la exporto. Puede hacer lo mismo para un tipo de datos n-aria simplemente pasando más funciones. Si la implementación no se supone que sea secreta, puede exportarla también (como fmap para unary). Recomiendo este tipo de función de mapa o vistas para tipos complicados porque la coincidencia de patrones lo vinculará a la implementación.
Los tipos básicos ya tienen dichas funciones definidas, p. maybe
y either
.
Posible: sí. Sabio: no necesariamente. –