首页 > 解决方案 > 创建列表理解时出现 Haskell 错误

问题描述

我正在按照本指南创建列表理解。

data Value = Two|Three|Four|Five|Six|Seven|Eight|Nine|Ten|J|Q|K|A
          deriving (Eq, Ord, Enum)

data Suite = Hearts | Spades | Diamonds | Clubs
         deriving (Eq, Ord, Enum)

type Card  = (Value, Suite)

pack :: [Card]
pack = [(Value,Suite) | Value <- [Two .. A], Suite <- [Hearts .. Clubs]]

当我创建 pack 函数时,它总是抛出

error: Data constructor not in scope: Suite :: Suite

标签: haskellfunctional-programming

解决方案


pack :: [Card]
pack = [(Value,Suite) | Value <- [Two .. A], Suite <- [Hearts .. Clubs]]

的左侧<-应该是一个变量(或其中包含变量的模式)。在 Haskell 中,它们以小写字母开头。尝试这个:

pack :: [Card]
pack = [(value,suite) | value <- [Two .. A], suite <- [Hearts .. Clubs]]

推荐阅读