Если я хочу, чтобы добавить все элементы списка кортежей, я получаю сообщение об ошибке со следующейшаблон матч в списке кортежей
let rec addTupLst (xs: 'a * 'a list) =
match xs with
| (a, b) :: rst -> a + b + (addTupLst rst)
| _ -> 0
addTupLst [(1, 2)]
Я получаю предупреждение
ошибка FS0001 : Это выражение, как ожидается, иметь тип
«а *» список
, но здесь имеет тип
«список б
Невозможно совпадение с шаблоном в списке кортежей таким образом, или есть еще одна ошибка?
Поместите парсеры вокруг кортежа (xs: ('a *' a)) – Petr
Стоит отметить, что вы также можете просто не включать аннотацию типа, и в этом случае компилятор выберет ее правильно. – TheQuickBrownFox
@ TheQuickBrownFox Хорошая точка. Я часто нахожу, что получаю больше запросов с помощью аннотаций, но в этом случае явно укусил, пытаясь перехитрить компилятор – beardc