0

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は無限に繰り返されます。

4

1 に答える 1

1

質問1については、次のようなものを使用すると思います

data Attr = Attr (Maybe Bool) -- Source 
                 (Maybe Bool) -- Target 
                 (Maybe Bool) -- Ghost

質問2には、次のようなものを使用します

data Graph = Graph [STMT]
于 2013-01-04T10:13:54.437 に答える