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.
Related videos on Youtube
Author by
Jake
Updated on July 09, 2022Comments
-
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 over 13 yearsGiven 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 theTypeable
constraint. -
Chris Eidhof over 13 yearsThis 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 over 3 yearsWhat if you're using Intellij's Haskell plugin?
-
Matt Ellen over 3 years@Displee edon's answer seems to cover that.