Подтвердить что ты не робот

F #: Нужно ли "веселое" ключевое слово?

Я печатал ключевое слово "fun", а затем я вспомнил, что вам не нужно в С#

Не было бы этого:

List.map (x -> x + 1) [1..10]

Быть таким же выразительным, как это:

List.map (fun x -> x + 1) [1..10]

Мне очень любопытно, почему ключевое слово "весело" необходимо вообще. Может ли кто-нибудь уточнить, почему синтаксически требуется ключевое слово "fun"?

4b9b3361

Ответ 1

Язык является неопределенным без него.

let x y = y z -> y z

Вызывает ли x вызов y функции z -> y z или игнорирует его аргумент и возвращает функцию y z -> y z?

Ответ 2

Множество достойных спекулятивных ответов уже... Я добавлю к миксу:

F # имеет базовый язык, совместимый с OCaml, а OCaml использует "fun".

Ответ 3

Я знаю как часть currying (см. этот пост), который вы можете заменить:

let countOneToTen = fun y List.map(fun x -> x + 1) y
countOneToTen = [1..10]

с

let countOneToTen y = List.map(fun x -> x + 1) y
countOneToTen = [1..10]

без ключевого слова fun.