Actualmente estoy intentando escribir una pequeña instancia de Show para funciones aritméticas primitivas.Instance Show para la función
El objetivo es hacer una lista de funciones visibles.
La función muy sencilla para la demostración de que se parece a:
showOp :: (Int -> Int -> Int) -> String
showOp op
| op 3 3 == 6 = "plus"
| op 3 3 == 0 = "minus"
| op 3 3 == 9 = "times"
| op 3 3 == 1 = "divide"
| otherwise = "undefined"
Pero no se puede obtener una instancia del Show para (Int -> Int -> Int). Lo intenté así:
instance Show (Int -> Int -> Int) where
show op = show "asdf"
Pero no funciona. WinHugs simplemente devuelve el error
Syntax error in instance head (variable expected)
¿Es posible definir Show para funciones? Si es así, ¿cómo podría abordar ese problema?
Dicho esto, no es posible definir 'Show' para brindarle más detalles sobre la función. –
Claro que sí. Puede mostrar el tipo (dado a través de Typeable); o puede mostrar algunas de las entradas y salidas (como se hace en QuickCheck). –
... Sí. Bueno. Lo siento. Sin embargo, no puede mostrar la implementación o el nombre. –