週に一回は書きますよ 月に4つ記事を書けばノルマは満たされます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
前の話と関係なくメモ。以下の二つのデータ型を書きます。
data GameNode =
  GameNode {
    update :: ShootSystem ss => ss -> [Key] -> [GameNode],
    render :: ShootSystem ss => ss -> IO (),
    entity :: Maybe GameEntity
    }

data GameEntity =
  GameEntity {
    move :: ShootSystem ss => ss -> [Key] -> [GameNode],
    draw :: ShootSystem ss => ss -> IO (),
    isValid :: Bool,
    receive :: GameEntity -> GameEntity,
    coord :: XY, velocity :: XY, energy :: Int, team :: Team,
    collisionType :: CollisionType
    }
これをコンパイルすると以下のエラーが出ます。
Illegal polymorphic or qualified type: forall ss.
                                       (ShootSystem ss) =>
                                       ss -> [Key] -> [GameNode]
In the definition of data constructor `GameEntity'
In the data type declaration for `GameEntity'
ここで注目は、GameNodeのところではなくその後のGameEntityでエラーが起きていること。なぜ上は許されて下は許されないのでしょう。

それとも上のもコンパイルが進むとエラーになるのでしょうか。

追記:どうもソースファイルで後のほうに定義されているものについてのエラーが先に出て、それだけでコンパイルがとまることは日常茶飯事のようです。うえのデータ型が可能かどうかは確かめていませんが。
スポンサーサイト
コメント
この記事へのコメント
data ShootSystem ss => GameNode ss =
GameNode {
update :: ss -> [Key] -> [GameNode ss],
render :: ss -> IO (),
entity :: Maybe (GameEntity ss)
}

data ShootSystem ss => GameEntity ss =
GameEntity {
move :: ss -> [Key] -> [GameNode ss],
draw :: ss -> IO (),
isValid :: Bool,
receive :: GameEntity ss -> GameEntity ss,
coord :: XY, velocity :: XY, energy :: Int, team :: Team,
collisionType :: CollisionType
}

I am haskell-master and I found a solution to this problem.
2006/06/29(木) 03:11 | URL | tanakh #Pk3ntcT6[ 編集]
おお、いきなり解法が。ありがとうございます。ちょっと暇があったら書いて見ます。
2006/06/30(金) 01:01 | URL | Gus #cfPLpUk6[ 編集]
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://gusmachine.blog49.fc2.com/tb.php/12-eee03ce8
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。