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

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

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

4 ответа

Решение

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

Например - используя #light

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

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

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 намного проще.

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

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

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

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

Другие вопросы по тегам