HASKELL编程的作业。。。。初级入门不会做,请帮忙提点下,万分感谢!!
moduleCell(Cell(..),Coord(..),CellState(..),ishead,isNeighbouringCoord)where--一个cell是...
module Cell (Cell (..),
Coord (..),
CellState(..),
ishead,
isNeighbouringCoord
)
where
--一个cell是由Coord和state组成
data Cell = Cell {cellCoord :: Coord, cellState :: Cellstate}
deriving (show, Read)
data Coord = Coord {xCoord, yCoord::Integer}
deriving (Ord, Eq, Show, Read)
data Cellstate = Head
|Tail
|Conductor
deriving (Show, Read)
下面2个部分是我自己写的,帮忙看下哪里有错为什么不可以load。。。谢谢!!(两条横线后面的是要求提示。。。)
--如果cell是head,得True,否则就是False
isHead::Cell->Bool
isHead cellState
|cellState == Head = True
|otherwise = False
--如果x和y是临近的整数,得True,否则就是False
isNeighbouringCoord::Coord->Coord->Bool
isNeighbouringCoord xCoord yCoord
|xCoord == (yCoord+1)||(yCoord-1) = True
|otherwise = False 展开
Coord (..),
CellState(..),
ishead,
isNeighbouringCoord
)
where
--一个cell是由Coord和state组成
data Cell = Cell {cellCoord :: Coord, cellState :: Cellstate}
deriving (show, Read)
data Coord = Coord {xCoord, yCoord::Integer}
deriving (Ord, Eq, Show, Read)
data Cellstate = Head
|Tail
|Conductor
deriving (Show, Read)
下面2个部分是我自己写的,帮忙看下哪里有错为什么不可以load。。。谢谢!!(两条横线后面的是要求提示。。。)
--如果cell是head,得True,否则就是False
isHead::Cell->Bool
isHead cellState
|cellState == Head = True
|otherwise = False
--如果x和y是临近的整数,得True,否则就是False
isNeighbouringCoord::Coord->Coord->Bool
isNeighbouringCoord xCoord yCoord
|xCoord == (yCoord+1)||(yCoord-1) = True
|otherwise = False 展开
1个回答
展开全部
很多问题,首先是大小写的问题,模块导出了ishead和CellState,而你下面声明的isHead的H是大写的,Cellstate的s是小写的
第二,你的isHead的类型声明应该是Cellstate -> Bool
第三,你的isNeighbouringCoord中的xCoord,yCoord 不知道是什么,但看上去应该来自于一个Coord中的xCoord和yCoord,那么你的类型应该是Coord->Bool,而且匹配也不能这么匹配
另外的 (yCoord+1)||(yCoord-1) yCoord肯定是个整数,这个逻辑运算左右两边肯定得都是Bool类型的
第二,你的isHead的类型声明应该是Cellstate -> Bool
第三,你的isNeighbouringCoord中的xCoord,yCoord 不知道是什么,但看上去应该来自于一个Coord中的xCoord和yCoord,那么你的类型应该是Coord->Bool,而且匹配也不能这么匹配
另外的 (yCoord+1)||(yCoord-1) yCoord肯定是个整数,这个逻辑运算左右两边肯定得都是Bool类型的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询