Должны ли цели сопоставления с образцом в F # всегда быть разделены запятыми? - PullRequest
1 голос
/ 15 августа 2011

Итак, я смотрел на следующий бит кода

let rec zip list list' =
  match list, list' with
  | [], _ -> []
  | _, [] -> []
  | h::t, h'::t' -> (h, h')::(zip t t')

когда я заметил, что это не синтаксическая ошибка для замены

match list, list' with

от

  match list list' with

единственная показанная ошибка

This expression was expected to have type
    'a -> 'b list * 'c list    
but here has type
    'b list    

на zip t t' (более t).

Мой вопрос: есть ли смысл вообще иметь match list list' with вместо match list list' with. Не должны ли цели сопоставления с образцом всегда быть разделены запятыми?

1 Ответ

3 голосов
/ 15 августа 2011

Да, но если вы напишите match list list' with, то будет только одиночная цель, указанная цель - это то, что вы получаете от применения функции list к аргументу list'.Поскольку list на самом деле не является функцией, вы получаете ошибку типа, которую вы цитируете.

...