似乎将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
有什么办法解决吗?在我的程序中,让此类型为浮点型没有任何意义。
答案 0 :(得分:5)
(^)
是Num
的一种方法。 The Complex
type's instantiation of Num
被声明为:
instance RealFloat a => Num (Complex a)
也就是说,除非Complex a
是Num
,否则a
不能将RealFloat
视为Int
。请改用Complex Double
等。