No se puede ir (sanamente) Num
-Num
, como Num proporciona ningún mecanismo para extraer información sobre el valor contenido distinto de su falsa ecuación y exposición de maquinaria, pero si usted está dispuesto a asumir un poco más en el nombre del número de donde vienes, entonces puedes tener recurso.
En particular
fromIntegral :: (Integral a, Num b) => a -> b
y la composición de
toRational :: Real a => a -> Rational
con
fromRational :: Fractional a => Rational -> a
son buenos candidatos para hacer lo que quiere decir, si no exactamente lo que pidieron.
Mientras read . show
está bien escrito y tiene la firma que usted propone, el significado es gobbledigook.No hay nada en absoluto que diga que el texto emitido por una instancia Show
será compatible con una instancia Read
completamente diferente, y hay muchos ejemplos de contador.
El contrato (implícito) en Read
y Show
solo se aplica cuando los usa con el mismo tipo.