无法将Complex Int提升为幂

时间:2018-06-24 00:29:43

标签: haskell types casting complex-numbers

似乎将Complex Int提升为权力在某些情况下违反了某些契约。我在这方面错了吗?

下面的最小示例

compl :: Complex Int -> Maybe (Complex Int)
compl d = (d^) <$> Just 3

错误消息:

No instance for (RealFloat Int) arising from an operator section
      In the first argument of ‘(<$>)’, namely ‘(d ^)’
      In the expression: (d ^) <$> Just 3
      In an equation for ‘compl’: compl d = (d ^) <$> Just 3

有什么办法解决吗?在我的程序中,让此类型为浮点型没有任何意义。

1 个答案:

答案 0 :(得分:5)

(^)Num的一种方法。 The Complex type's instantiation of Num被声明为:

instance RealFloat a => Num (Complex a)

也就是说,除非Complex aNum,否则a不能将RealFloat视为Int。请改用Complex Double等。