First, never use fromInteger. Use fromIntegral.
You can see where the type error is by looking at the type of replication:
replicate :: Int -> a -> [a]
so when you pass "k" as the argument you are asserting is Integer with a type declaration, we have a type error.
A better approach for this would be to use genericReplicate:
genericReplicate :: (Integral i) => i -> a -> [a]
So then:
power1 nk = product (genericReplicate kn)
source share