2010-11-09 48 views

Respuesta

10

Si está utilizando un indicador interactivo de Haskell (como GHCi) puede escribir :t <expression> y eso le dará el tipo de expresión.

p. Ej.

Prelude> :t 9 

da

9 :: (Num t) => t 

o, por ejemplo

Prelude> :t (+) 

da

(+) :: (Num a) => a -> a -> a 
18

import Data.Typeable 
isInteger :: (Typeable a) => a -> Bool 
isInteger n = typeOf n == typeOf 1 

Pero usted debe pensar en su código, esto no es muy parecido a Haskell debe ser, y probablemente no es lo que desea.

+0

Dado que mencionó 'isDigit', creo que quiere comprobar si una cadena representa un número entero, no si una variable dada * es * un entero, aunque eso es lo que dice el título. Además, su firma de tipo es incorrecta: le falta la restricción 'Tipoable'. – sepp2k

+14

Esto es casi siempre un enfoque equivocado. Parece que el póster es un principiante de Haskell, y deberíamos tratar de comprender mejor su problema, no dar soluciones como esta. –

Cuestiones relacionadas