首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用导出符号

使用导出符号
EN

Stack Overflow用户
提问于 2020-03-15 22:27:30
回答 1查看 56关注 0票数 2

我有一个名为maxflow.hs的Haskell文件,它导出几个符号

代码语言:javascript
复制
module MaxFlow 
(solveMaxFlow,MaxFlowNet,Vertex,Graph) where
import Data.List 


data Vertex = Vertex {
                          vertexLabel :: String
                        , vertexNeighbors :: [(String,Int)]
                        , vertexDistance :: Int
                        , vertexPredecessor :: String
                      } deriving (Show)

....

在同一个目录中,我有另一个名为elimination.hs的文件,试图使用这些符号之一。

代码语言:javascript
复制
import MaxFlow

g =  [
                Vertex "0" [("1",16), ("2",13)         ] (maxBound::Int)  "",
                Vertex "1" [("2",10), ("3",12)  ] (maxBound::Int) "",
                Vertex "2" [("4",14) ,("1",4)        ] (maxBound::Int) ""    ,
                Vertex "3" [ ("5",20), ("2",9)] (maxBound::Int) ""      ,
                Vertex "4" [("5",4), ("3",7) ] (maxBound::Int) ""      ,
                Vertex "5" [ ] (maxBound::Int) ""    
      ]

但出于某种原因我不能加载这个文件。运行:l elimination.hs

我得到了

代码语言:javascript
复制
elimination.hs:4:17: error:
    Data constructor not in scope:
      Vertex :: [Char] -> [([Char], Integer)] -> Int -> [Char] -> a
  |
4 |                 Vertex "0" [("1",16), ("2",13)         ] (maxBound::Int)  "",
  |                 ^^^^^^

我可能错过了一些非常基本的东西。知道吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-15 22:32:07

代码语言:javascript
复制
module MaxFlow 
   (...,Vertex,...) where

这表示您希望导出名为类型Vertex,而不是数据构造函数或字段。您可能需要的是同时导出数据类型和数据构造函数:

代码语言:javascript
复制
module MaxFlow (Vertex(Vertex)) where

或导出类型、所有数据构造函数和所有字段:

代码语言:javascript
复制
module MaxFlow (Vertex(..)) where

这些点是字面的而不是短手,您可以在导出列表中键入Vertex(..)来表示类型、数据构造函数和所有字段。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60698299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档