Ответ 1
Язык является неопределенным без него.
let x y = y z -> y z
Вызывает ли x
вызов y
функции z -> y z
или игнорирует его аргумент и возвращает функцию y z -> y z
?
Я печатал ключевое слово "fun", а затем я вспомнил, что вам не нужно в С#
Не было бы этого:
List.map (x -> x + 1) [1..10]
Быть таким же выразительным, как это:
List.map (fun x -> x + 1) [1..10]
Мне очень любопытно, почему ключевое слово "весело" необходимо вообще. Может ли кто-нибудь уточнить, почему синтаксически требуется ключевое слово "fun"?
Язык является неопределенным без него.
let x y = y z -> y z
Вызывает ли x
вызов y
функции z -> y z
или игнорирует его аргумент и возвращает функцию y z -> y z
?
Множество достойных спекулятивных ответов уже... Я добавлю к миксу:
F # имеет базовый язык, совместимый с OCaml, а OCaml использует "fun".
Я знаю как часть 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.