Tengo un tipo de datos que contiene un IORef como un elemento importante. Esto significa que no hay una forma clara de hacerlo miembro de la clase de tipo show
. Esto no es tan malo ya que tengo una función print
en la mónima IO para este tipo. Pero es molesto en GHCi que cada vez que devuelvo una de estas cosas como resultado recibo un error que indica que no se puede mostrar.Mostrar para IO tipos
¿Hay alguna manera de hacer que GHCi, que opera en la mónada IO de todos modos, use una acción IO para mostrar un resultado? Si no, ¿habría alguna consecuencia negativa al escribir show a = unsafePerformIO $ print a
?
Por lo que yo sé, no hay manera de saber ghci para usar una función diferente a 'show' para mostrar los resultados. Sin embargo, puede definir una instancia de espectáculo para su tipo de datos que simplemente muestre "" o similar para el ioref. Eso es probablemente un poco más limpio, si es menos conveniente, que usar 'inseguroPerformIO'. –
sclv