1

我正在尝试拥有一个UArray Int (Complex Double). 此签名很好,但是当我尝试使用访问特定索引时(!)收到错误消息。这是我尝试使用的代码:

test :: UArray Int (Complex Double) -> Complex Double
test arr = arr ! 0

和我得到的错误:

No instance for (IArray UArray (Complex Double)) arising from a use of `!'
Possible fix:
  add an instance declaration for (IArray UArray (Complex Double))
In the expression: arr ! 0
In an equation for `test': test arr = arr ! 0

UArray Int Double很有效,我很好奇为什么这不适用于(Complex Double)。在此先感谢您的帮助。

4

1 回答 1

4

Data.Array.Unboxed documentation, 似乎有IArraywith的实例UArray仅用于Char,DoubleInt, 不是多态的类型。如果你需要存储其他类型的值,你应该使用 boxed Array

于 2012-11-19T20:04:01.210 回答