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

から、多型ではなく、、、などのタイプのwithData.Array.Unboxed documentationのインスタンスがあるようです。他のタイプの値を保存する必要がある場合は、ボックス化されたを使用する必要があります。IArrayUArrayCharDoubleIntArray

于 2012-11-19T20:04:01.210 に答える