現在、私はこのようなものを持っています:
data MyData = SomeData | MoreData | EvenMore
data DataLists = DataLists [MyData] [MyData]
これにより、明らかに次のようなことができます。
myDataList :: DataLists
myDataList = DataLists [SomeData, MoreData] [EvenMore, SomeData]
しかし、代わりに次のようなことをしたいと思います。
-- Static Module File:
class MyClass b where
evaluate :: b -> Int
data SomeData = SomeData
data MoreData = MoreData
data EvenMore = EvenMore
instance MyClass SomeData where
evaluate _ = 2
instance MyClass MoreData where
evaluate _ = 3
instance MyClass EvenMore where
evaluate _ = 4
data DataList = DataList [MyClass] [MyClass] -- Obviously this is wrong
コードのその部分を静的なままにしておきたいです。後で、そのモジュールを使用していくつかのタイプを追加し、データリストに追加したいので。モジュール全体が2つの異なるプロジェクトで使用され、編集を続ける必要がないため、これを個別に作成する必要があります。
data MyVeryOwnData = MyVeryOwnData
--I should be able to make up as many datastructures as I want
instance MyClass MyVeryOwnData where
evaluate _ = 99
myList :: DataList
myList = DataList [MyVeryOwnData, SomeData] [SomeData, EvenMore]
MyVeryOwnDataを次のようにモジュールファイルに入れるだけでよいことに気付きました。
data MyData = SomeData | MyVeryOwnData ...
instance MyClass MyData where
evaluate SomeData = 2
evaluate MoreData = 3
... etc.
しかし、前に言ったように、に任意の量のデータ型を追加したいので、それはしたくありません。