parsec
ライブラリを使用して(学習目的で)haskellに単純なパーサーを実装しようとしています。そこで、次のような一連のデータ構造と関連する関数を作成しました。
data SourceElement
= StatementSourceElement Statement
| FunctionSourceElement FunctionName FunctionBody
data Statement
= IfStatement Expr Statement Statement
| WhileStatement Expr Statement
data FunctionBody = FunctionBody [SourceElement]
parseSourceElement :: Parser SourceElement
parseSourceElement = ...
parseFunctionBody :: Parser FunctionBody
parseFunctionBody = ...
それは正常に動作します。ここで、これを 2 つのモジュールに分割して、データ構造を分離したいと考えていますFunctionBody
(Statement
読みやすさの問題のため)。しかし、私はできません!その理由は、SourceElement
との間の循環依存FunctionBody
です。
それで、この問題を解決する方法はありますか?