Haskell-导出数据构造函数

Adr*_*ret 5 haskell ghci

我的模块公式中有以下数据:

data Formula = Formula {
    typeFormula :: String, 
    nbClauses   :: Int,
    nbVars      :: Int,
    clauses     :: Clauses       
}
Run Code Online (Sandbox Code Playgroud)

而且我想导出它,但是我不知道正确的语法:

module Formula (
    Formula ( Formula ),
    solve
) where
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我正确的语法吗?

jke*_*len 7

您的某些困惑来自与您要导出的构造函数具有相同的模块名称。

module Formula (
    Formula ( Formula ),
    solve
) where
Run Code Online (Sandbox Code Playgroud)

应该

module Formula (
    Formula (..),
    solve
) where
Run Code Online (Sandbox Code Playgroud)

要么

module Formula (
    module Formula ( Formula (..)),
    solve
) where
Run Code Online (Sandbox Code Playgroud)

您当前的导出语句说,在Module Forumla中,导出FormulaModule Formula中定义的Type 和函数solve(即在模块作用域内,无论定义在何处)

该(..)语法意味着导出上述类型的所有构造函数。在您的情况下,它等同于显式

module Formula (
    Formula (typeFormula,nbClauses, nbVars,clauses),
    solve
) where
Run Code Online (Sandbox Code Playgroud)