无法将Complex Int提升到电源

Pot*_*mpo 1 haskell types casting complex-numbers

似乎提高Complex Int权力违反了某些合同.我错了吗?

以下最小例子

compl :: Complex Int -> Maybe (Complex Int)
compl d = (d^) <$> Just 3
Run Code Online (Sandbox Code Playgroud)

并且错误消息:

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
Run Code Online (Sandbox Code Playgroud)

有没有办法解决?允许这种类型是浮点数在我的程序中没有任何意义.

jwo*_*der 5

(^)是一种方法Num. Complex类型的实例Num声明为:

instance RealFloat a => Num (Complex a)
Run Code Online (Sandbox Code Playgroud)

也就是说,除非是a ,否则你不能将a Complex a视为a .使用等代替.NumaRealFloatIntComplex Double