Haskell: Check if integer, or check type of variable

57,060

Solution 1

If you are using an interactive Haskell prompt (like GHCi) you can type :t <expression> and that will give you the type of an expression.

e.g.

Prelude> :t 9

gives

9 :: (Num t) => t

or e.g.

Prelude> :t (+)

gives

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

Solution 2


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

But you should think about your code, this is not very much like Haskell should be, and it probably is not what you want.

Share:
57,060

Related videos on Youtube

Jake
Author by

Jake

Updated on July 09, 2022

Comments

  • Jake
    Jake almost 2 years

    So let's say you have a variable n.

    You want to check if its an integer, or even better yet check what type it is.

    I know there is a function in haskell, isDigit that checks if it is a char.

    However is there a function that checks if n is in integer, or even better, gives the type of n?

  • sepp2k
    sepp2k over 13 years
    Given that he mentioned isDigit, I think he wants to check whether a string represents an integer - not whether a given variable is an integer, even though that's what the title said. Also your type signature is wrong: you're missing the Typeable constraint.
  • Chris Eidhof
    Chris Eidhof over 13 years
    This is almost always a wrong approach. It looks like the poster is a Haskell beginner, and we should try to understand his problem better, not give solutions like this.
  • Displee
    Displee over 3 years
    What if you're using Intellij's Haskell plugin?
  • Matt Ellen
    Matt Ellen over 3 years
    @Displee edon's answer seems to cover that.

Related