Для чего ключевое слово, которому “позволяют”, на функциональных языках как F# и OCaml?

При рассмотрении F# Ocaml и других функциональных примеров кода языка я замечаю, что ключевое слово, которому позволяют, используется очень часто.

  • Почему Вам нужен он? Почему языки были разработаны, чтобы иметь его?
  • Почему Вы не можете просто пропустить его? например: x=4, которому позволяют, становится x=4
14
задан Trix 16 May 2010 в 14:12
поделиться

6 ответов

В F # (и OCaml) let - довольно мощная конструкция, которая используется для привязки значений , что означает придание некоторого значения символу. Это может означать разные вещи:

Объявление локального или глобального значения - вы можете использовать его для объявления локальных значений. Это похоже на создание переменной в императивных языках, за исключением того, что значение переменной не может быть изменено позже (оно неизменяемо):

let hello = "Hello world"
printfn "%s" hello

Объявление функции - вы также можете использовать его для объявления функций. В этом случае вы указываете, что символ - это функция с некоторой арностью:

let add a b = a + b
printfn "22 + 20 = %d" (add 22 20)

Зачем он вам? В F # код без него был бы неоднозначным. Вы можете использовать value hiding для создания нового символа, который скрывает предыдущий символ (с тем же именем), поэтому, например, следующее возвращает true :

let test () =
  let x = 10
  let x = 20 // hides previous 'x'
  x = 20     // compares 'x' with 20 and returns result

Если вы пропустили let , вы не узнаете, сравниваете ли вы значения или объявляете новый символ.Кроме того, как отмечали другие, вы можете использовать синтаксис let = в (если вы используете перенос строки в F #, тогда вам не нужно в ), чтобы записать привязки значений как часть другого выражения:

let z = (let x = 3 + 3 in x * x)

Здесь значение z будет 36. Хотя вы можете изобрести некоторый синтаксис, который не требует ] let , я думаю, что использование let просто делает код более читабельным.

27
ответ дан 1 December 2019 в 06:35
поделиться

Основная цель let - установить область видимости вокруг его определений.

let in

Гарантирует, что определения не загрязняют пространство имен чем-либо, кроме .

9
ответ дан 1 December 2019 в 06:35
поделиться

«let» вводит новую область видимости переменных и позволяет вам связывать переменные со значениями для этой области. Его часто читают как «пусть x будет [значением] в ...». Когда у вас нет присваивания, очень полезно избегать конфликта имен переменных.

4
ответ дан 1 December 2019 в 06:35
поделиться

let означает «привязать значение к имени» и, как правило, произносится, создает новую переменную. x = 4 означает «присвоить 4 x», что не создает новое имя .

См. http://msdn.microsoft.com/en-us/library/dd233238.aspx

1
ответ дан 1 December 2019 в 06:35
поделиться

В Haskell,

foo = let x = 5
      y = 7
      in z=x+y

используется, чтобы прояснить, что x и y равны " частные "переменные в foo.

3
ответ дан 1 December 2019 в 06:35
поделиться

Если вы увлекаетесь обучением, эта лекция также может быть актуальной, особенно. Часть об оценке срока аренды.

1
ответ дан 1 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: