私はいくつかの一般的な情報を格納する型を作成したいと思います。私にとっては、この型は Molecule であり、化学グラフと分子特性を格納します。
data Molecule = Molecule {
name :: Maybe String,
graph :: Gr Atom Bond,
property :: Maybe [Property] -- that's a question
} deriving(Show)
タプルで表現したいプロパティ
type Property a = (String,a)
プロパティは、Float、Int、String などの任意の型を持つことができるためです。
問題は、Molecule のデータ構造をどのように形成するかということです。そのため、Molecule で任意の数の任意のタイプのプロパティを収集できます。私が行った場合
data Molecule a = Molecule {
name :: Maybe String,
graph :: Gr Atom Bond,
property :: Maybe [Property a]
} deriving(Show)
分子を作成するとき、1 つのタイプを直接指定する必要があります。