2017-12-21 13 views
0

私はモジュール式で、このデータを持っている:ハスケル - エクスポートデータコンストラクタ

data Formula = Formula { 
    typeFormula :: String, 
    nbClauses :: Int, 
    nbVars  :: Int, 
    clauses  :: Clauses  
} 

そして、私はそれをエクスポートしたいが、私は右の構文を知らない:

module Formula (
    Formula (Formula), 
    solve 
) where 

誰かが言うことができます私は正しい構文をお願いしますか?

+0

はい、それは 'フォーミュラ(式)'です。たぶん、尋ねるのではなく、試してみてください。それははるかに速い方法を見つけ出すだろう、と私は思います。 – arrowd

+0

しかし、これはdoes not仕事x) –

+0

少なくとも、エラーメッセージを投稿してください。 – arrowd

答えて

2

あなたが混乱しているのは、エクスポートしようとしているコンストラクタと同じモジュール名を持つことに由来しています。

module Formula (
    Formula (Formula), 
    solve 
) where 

module Formula (
    Formula (..), 
    solve 
) where 

それとも

module Formula (
    module Formula (Formula (..)), 
    solve 
) where 

であるべきあなたの現在のエクスポートステートメントは、モジュール式と関数内で定義されたタイプFormulaをエクスポートし、モジュールForumlaで言います解決する(モジュールのどこに定義されていてもその範囲内にある))

(..)の構文は、前のタイプのすべてのコンストラクタをエクスポートすることを意味します。あなたの場合、それは明示的に同等です

module Formula (
    Formula (typeFormula,nbClauses, nbVars,clauses), 
    solve 
) where