2017-08-21 10 views
1

次のデータ型がありますが、Sportのインスタンスを作成したいのですが、データからFootball型を呼び出す方法がわかりませんタイプスポーツ。複数の可能な型コンストラクタがある間にデータ型の特定のコンストラクタを使用する方法

`data Football a = Football 
{ players  :: Players a  
, Stadium  :: Stadium a 
}  

data Tennis a = Tennis 
{ players1  :: Players a  
, Stadium1  :: Stadium a 
} 
data Sport a = SF Football a | ST Tennis a 

私は:

Instance Show a => Show (Sport a) where 
show Football{..} = "<== Football ==>" 
show Tennis{..} = "<== Tennis ==>" 

私は、エラーメッセージが表示されます:期待タイプ「スポーツに私はいくつかの他の方法とのチェックをしようと試み、実際の型「サッカーT6」 と と一致しませんでした。いくつかの他の例が、私はそれを行う方法を理解することができます...いくつかのアイデアを持っていますか?事前に

感謝:)

答えて

4

あなたがここに

data Sport a = SF (Football a) | ST (Tennis a) 

括弧その後、あなたは他のタイプ、スポーツに対するパターンマッチングをする必要はありません必要があります。

instance Show a => Show (Sport a) where 
    show (SF Football{..}) = "<== Football ==>" 
    show (ST Tennis{..}) = "<== Tennis ==>" 
関連する問題