首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不在作用域中:数据构造函数?

不在作用域中:数据构造函数?
EN

Stack Overflow用户
提问于 2015-02-07 18:29:46
回答 1查看 22.5K关注 0票数 4

我是haskell的新手。我遇到了这个问题:

Assignment12.hs:5:12:不在作用域中:数据构造函数` `Suit‘

Assignment12.hs:5:18:不在作用域中:数据构造函数‘`Rank’

Assignment12.hs:6:11:不在作用域中:数据构造函数‘`Rank’

Assignment12.hs:7:11:不在作用域中:数据构造函数‘`Rank’

Assignment12.hs:8:11:不在作用域中:数据构造函数` none‘失败,模块已加载:无。

这是我的代码:

代码语言:javascript
复制
data Suit = Clubs | Diamonds | Hearts | Spades deriving (Show, Eq)
data Rank = Jack | Queen | King | Ace | Num Int deriving (Show, Eq)
type Card = (Suit, Rank)
cardValue :: Card -> Int
cardValue (Suit, Rank)
     | Rank == Ace = 11
     | Rank == Ace = 11
     | Rank == Jack = 10
     | Otherwise = Num

我真的很感谢你的帮助。谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-02-07 18:37:29

在haskell中,变量名必须以小写字母开头。任何大写字母都会被编译器解释为一个Data Constructor,这就是为什么你会得到这个错误。

在定义cardRank时,变量(suit, rank)必须以小写字母开头,代码才能编译。

这应该是可行的

代码语言:javascript
复制
data Suit = Clubs | Diamonds | Hearts | Spades deriving (Show, Eq)
data Rank = Jack | Queen | King | Ace | Num Int deriving (Show, Eq)
type Card = (Suit, Rank)

cardValue :: Card -> Int
cardValue (suit, rank)
     | rank == Ace = 11
     | rank == Ace = 11
     | rank == Jack = 10
cardValue (suit, Num x) = x
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28381055

复制
相关文章

相似问题

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