简体   繁体   English

在Haskell中创建数据类型

[英]Creating data type in Haskell

I would like to create a new data type that either takes in Start or A tuple of values. 我想创建一个新的数据类型,该数据类型可以使用Start或A tuple of values。 This is what I have: 这就是我所拥有的:

type Coord = (Int, Int)
data Direction = N | E | S | W
                 deriving (Eq, Show, Read)


type Move = (Coord, Direction)
type BoardSpec = [(Coord, Bool)]

type GameTreeNode = (GameTree2, BoardSpec, Move)
data GameTree2 = Start | GameTreeNode deriving(Show)


blahblah :: GameTree2
blahblah = blahb

blahb :: GameTreeNode
blahb = (Start, testbo, ((1, 1), N))

This however, gives me the error on blahblah 但是,这给了我错误

Couldn't match type `(GameTree2, Move)' with `GameTree2'
Expected type: GameTree2
  Actual type: GameTreeNode

data GameTree2 = Start | 数据GameTree2 =开始| GameTreeNode deriving(Show) GameTreeNode派生(显示)

expands to: 扩展为:

 
 
 
  
  data GameTree2 = Start | (GameTree2, BoardSpec, Move) deriving(Show)
 
  

You can't make a tuple a valid value of your type. 您不能使元组成为您类型的有效值。


You need to wrap it in a constructor: 您需要将其包装在构造函数中:

 data GameTree2 = Start | Node GameTreeNode deriving(Show) 

where Node is whatever name you choose for it. Node是您为其选择的任何名称。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM