Во-первых, никогда не используйте fromInteger. Использовать из Integral.
Вы можете увидеть, где находится ошибка типа, посмотрев на тип репликации:
replicate :: Int -> a -> [a]
поэтому, когда вы передаете ему 'k' в качестве аргумента, который, как вы утверждали, является целым числом через объявление типа, у нас возникает ошибка типа.
Лучшим подходом для этого было бы использование genericReplicate:
genericReplicate :: (Integral i) => i -> a -> [a]
Итак:
power1 n k = product (genericReplicate k n)