3

Haskellで移動計算機のようなチェスに取り組んでいて、割り当てで少し問題が発生しています。Data.Arrayを使用して、CharとIntで定義された位置でピースを保存する必要があります。これで、writeToArrayを使用した入力としてピースのリストがあり、多くのことを試しましたが、エラーが発生し続けます。誰かが私が間違っていることを知っていますか?

これがその内容のコードです:

data Squares = Squares {array :: Array Pos Piece}
data Pos = Pos Char Int deriving (Eq, Ord, Ix)
data Piece = Piece { piecetype :: PieceType, color :: PieceColor } | Empty

writeToArray :: [Piece] ->(Array Pos Piece)
writeToArray (x:xs) = (((Pos 'a' 1), (Pos 'h' 8)) [((Pos char int), x) | char <- ['a'..'h'], int <- [1..8]])` : writeToArray (xs)

そしてそれが与えるエラー:

Couldn't match expected type `Array Pos Piece' with actual type '[a0]'

すべての助けは大歓迎です

4

1 に答える 1

4

修正しました!

writeToArray関数を次のように変更しました。

writeToArray :: [Piece] ->(Array Pos Piece)
writeToArray  list = Data.Array.array (Pos 'a' 1, Pos 'h' 8) (zip  [(Pos char int)| char <- ['a'..'h'], int <- [1..8]] list)

この問題で他の人を助けるかもしれません^_^

于 2012-10-21T13:43:50.467 に答える