Неполное сопоставление с образцом в F#
Рассмотрим следующий код:
let list1 = [1; 2; 3; 4; 5];;
let getThird3 = function
|[] ->[];
| _::_::l3::t -> t;;
getThird3 list1;
При вставке на терминал работает fsharpi это дает мне эту ошибку
> let list1 = [1; 2; 3; 4; 5];;
val list1 : int list = [1; 2; 3; 4; 5]
> let getThird3 = function
- |[] ->[];
- | _::_::l3::t -> t;;
let getThird3 = function
----------------^^^^^^^^
/Users/nickolasmorales/stdin(17,17): warning FS0025: Incomplete pattern matches on this expression. For example, the value '[_;_]' may indicate a case not covered by the pattern(s).
val getThird3 : _arg1:'a list -> 'a list
Какие-либо предложения? Я попытался использовать оба: только TAB и пробел, но он не распознает ничего после функции.
1 ответ
Это всего лишь предупреждение:
если вы делаете getThird3 [1;2]
Вы получите исключение совпадения.
Предупреждение должно выбрать определенное место в качестве основы для предупреждения и function
вероятно, так же хорошо, как и везде.
Чтобы убрать предупреждение, я бы изменил соответствие на
| _::_::l3::t -> t;;
| _ -> failwith "not a long enough list"