Когда использовать "функцию" вместо "весело"?

Возможный дубликат:
Явное соответствие F # и синтаксис функций

Здравствуйте,

Я изучаю F # и смущен словами 'fun' и 'function'. Я понимаю, что это одно и то же.

// Use 'fun'
let testFunction1 = fun argument -> match argument with
                                    | Some(x) -> x
                                    | None    -> 0

// Use 'function'
let testFunction2 = function
                    | Some(x) -> x
                    | None    -> 0

Является ли функция "просто" сокращенной для "fun x → match x with"? Есть ли разница между временем выполнения/оптимизации между ними? Почему я предпочитаю использовать один над другим?

Как бы то ни было, "функция" просто делает код более трудным для чтения. Я что-то пропустил?

Ответ 1

Это просто синтаксический сахар. Так же, как в С# c => c = 'A' используется синтаксический сахар для delegate (char c) { return c = 'A'; }. На самом деле все сводится к личным предпочтениям.

Ответ 2

функция допускает только один аргумент, но позволяет сопоставлять шаблоны, а fun - более общий и гибкий способ определения функции. Посмотрите здесь: http://caml.inria.fr/pub/docs/manual-ocaml/expr.html