Я пытаюсь сравнить цветовой кортеж всех элементов в списке. Если они имеют одинаковый цвет, верните true. Если нет, верните false. Когда я запускаю код, компилятор выдает ошибку.
Я использовал сопоставление с образцом плюс вложенный оператор if, чтобы проверить, совпадает ли цвет заголовка списка со всеми другими элементами.
type Suit = Clubs | Diamonds | Hearts | Spades
type Rank = Jack | Queen | King | Ace | Num of int
type Card = Rank * Suit
type Color = Red | Black
type Move = Discard of Card | Draw
let cards = [(Jack,Clubs); (Num(8),Spades)]
let card_color (c:Card) =
match c with
| _, Clubs -> Black
| _, Spades -> Black
| _, Diamonds -> Red
| _, Hearts -> Red
let all_same_color cs =
match cs with
| [] -> true
| x::xs ->
if not card_color cs.Head = card_color x then false else true
all_same_color cards
Я ожидаю, что он вернет true, если head соответствует цветам с другими элементами или false в противном случае. F # выдает ошибку: это значение не является функцией и не может быть применено.