One way to calculate 2^8 in haskell is by writing
product(replicate 8 2)
When trying to create a function for this, defined as follows…
power1 :: Integer → Integer → Integer
power1 n k | k < 0 = error errorText
power1 n 0 = 1
power1 n k = product(replicate k n)
i get the following error:
Couldn't match expected type 'Int' against inferred type 'Integer'
My guess is that I must use the fromInteger function somewhere… I’m just not sure where or how? Is it an interface or what is fromInteger, and how should I use it?
Thanks
Firstly, never use fromInteger. Use fromIntegral.
You can see where the type error is by looking at the type of replicate:
so when you giv it ‘k’ as an argument, which you’ve asserted is an Integer via the type declaration, we have a type error.
A better approach for this would be to use genericReplicate:
So then: