F # - Должен ли я учиться с или без # света?

Я изучаю F # и до сих пор наслаждаюсь этим. Почти все примеры онлайн используют легкий синтаксис (#light); однако также дайте комментарий о том, что в большинстве случаев он включен для указанного примера.

Лучше ли узнать F #, используя # свет включен или отключен? Я планирую, в конечном итоге, изучить его без включения, но мне интересно, было бы лучше изучить его в начале или работать над его применением после того, как я больше знаю основной язык.

Ответ 1

Я бы предпочел изучить F # с синтаксисом #light. Нелегкая версия иногда полезна для понимания некоторых трюков в синтаксисе F #, но синтаксиС#light дает вам много приятного опыта.

Например - с помощью #light

let add a b c = 
  let ab = a + b
  printfn "%d" ab
  c - ab

Используя не-свет, вы можете написать одно и то же:

let add a b c = 
  let ab = a + b in // 'in' keyword specifies where the binding (value 'ab') is valid
  printfn "%d" ab;  // ';' is operator for sequencing expressions
  c - ab;;          // ';;' is end of a function declaration

Это, например, показывает, что вы не можете написать что-то вроде:

let doNothing a b = 
  let sum = a + b in 

В конце есть ключевое слово "in", но функция не имеет никакого тела (потому что в нем нет выражения "in" ). В этом случае непрозрачный синтаксис иногда интересен, чтобы понять, что происходит... Но, как вы можете видеть, код #light намного проще.

Ответ 2

"#light", вероятно, станет дефолтом в будущей версии языка, поэтому я бы узнал его таким образом. Я считаю, что для кого-то редко можно использовать более тяжелый синтаксис, кроме совместимости с OCaml (либо при кросс-компиляции, либо потому, что человек, сидящий на клавиатуре, знает OCaml и делает более плавный переход на F #).

Ответ 3

Поскольку я изучил F # из книги OCaml (и я использую режим OCaml для Emacs для редактирования кода F #), я предпочитаю использовать "тяжелый" синтаксис. Я работал с кодом #light, и, конечно, большинство примеров F # написаны с использованием легкого синтаксиса, поэтому полезно иметь общее знакомство. Тем не менее, это довольно легко переключиться с тяжелого на свет, чем наоборот, поэтому, конечно, неплохо было бы изучить его с использованием сильного синтаксиса.

Я столкнулся с случайной раздражающей ошибкой, когда тяжелый синтаксис рассматривался как гражданин второго сорта (комбинация была сломана для выражений вычисления, выпущенных парами), но они довольно редки. Вообще говоря, я не думаю, что различия очень значительны, и мне нужно взглянуть близко, чтобы определить, какой синтаксис используется при просмотре кода в изоляции. YMMV.

Ответ 4

Если я правильно помню, книга "Expert С#" упоминает, что #light будет по умолчанию, когда отправляется F #, и этот синтаксис не светится только для совместимости.