我的模块公式中有以下数据:
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)
有人可以告诉我正确的语法吗?
您的某些困惑来自与您要导出的构造函数具有相同的模块名称。
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)