I am new to haskell. I am getting this problem :

Assignment12.hs:5:12: Not in scope: data constructor `Suit'

Assignment12.hs:5:18: Not in scope: data constructor `Rank'

Assignment12.hs:6:11: Not in scope: data constructor `Rank'

Assignment12.hs:7:11: Not in scope: data constructor `Rank'

Assignment12.hs:8:11: Not in scope: data constructor `Otherwise' Failed, modules loaded: none.

This is my code :

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 

I really appreciate your help. Thanks

1

1 Answer

In haskell variable names must start with a lowercase letter. Anything that is uppercase is interpreted by the compiler as a Data Constructor which is why you are getting that error.

When you define cardRank the variables (suit, rank) must start with lowercase letters for your code to compile.

This should work

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 
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy