0
Вот мой код, как я могу сказать, где п ИНТ между 2..10Haskell не мог соответствовать предполагаемый тип `Integer 'с фактическим типом` [Integer]
data Rank = Numeric Integer | Jack | Queen | King | Ace
deriving (Eq, Show)
valueRank :: Rank ->Integer
valueRank rank
|rank ==Jack = 10
|rank ==King = 10
|rank ==Queen = 10
|rank ==Ace = 10
|rank == Numeric n = n
where n =[x|x<-[2..10]]
'[x | x <- [2..10]] 'возвращает список, поэтому в этой последней строке' n' имеет тип '[Integer]'. Вы действительно не можете ограничить диапазон 'n' на уровне типа. Вы, вероятно, просто захотите проверить его, прежде чем он добавится к 'Numeric' –