Haskell型の式について2つの質問があります。
質問1 -
タイプNODEを宣言したい
data NODE = Node String ATTR
タイプATTRには、次の3つのサブタイプが含まれます。
ソースブール
ターゲットブール
GhostInt
data ATTR = Source Bool | Target Bool | Ghost Bool
ただし、上記の宣言は、ATTRに次のようなサブタイプの組み合わせを含めることができるという要件を満たしていません。
- ATTRには、ソースブールとターゲットブールを同時に含めることができます
- ATTRには、Source Bool、Target Bool、GhostIntを同時に含めることができます
- ATTRは空にすることもできます(何も含まれていません)
質問2 -
タイプGRAPHを宣言したいと思います。このタイプでは、グラフに1つ以上のステートメント(STMTS)を含めることができ、グラフが空の場合はステートメントを含めることができません。だから私は次のように宣言します:
data GRAPH = Graph String STMTS
data STMTS = STMT | STMTS
しかし、繰り返しになりますが、再帰データ型STMTSは無限に繰り返されます。