Каковы последние изменения в F #? - PullRequest
20 голосов
/ 11 февраля 2010

Я начинаю изучать F #. Я хорошо разбираюсь в таких языках программирования, как C # (и вообще использую .NET Framework), но функциональное программирование для меня новость. Способ, которым я учусь лучше всего, - взять книгу на эту тему и начать читать - поэтому я взял копию «Эксперт F #» и «F # для ученых». Несколько раз у меня возникало впечатление, что эти книги, похоже, уже устарели из-за недавних изменений в языке - ничего слишком драматического, но это дает немного неприятное ощущение, что их может быть больше.

Теперь, когда F # 2.0, похоже, стабилизировался, было бы неплохо увидеть, как «настоящий» F # оказался по сравнению с версиями языка, описанными в этих (и подобных) книгах.

Итак, мои вопросы:

  • Какие темы изменились после того, как книги были напечатаны, и больше не действительны, как описано? Есть ли главы, которые я могу полностью пропустить? (Я знаю, что некоторые функциональные возможности были перенесены в PowerPack, хотя мне не совсем ясно, какая функциональность есть в PowerPack, а какая в стандартной установке) *
  • Какие функции языка описаны правильно, но есть ли более новые альтернативы? (Описание событий все еще актуально?)
  • какие особенности языка, о которых я должен знать, были добавлены (или изменены) после написания этих книг?
  • Есть ли другие недавние изменения в языке, о которых я должен знать?

редактирование: Спасибо всем за ответы!

Что касается примечаний к выпуску, я смог найти в блоге Дона Сайма следующие "подробные примечания к выпуску", относящиеся к версиям F # после 1.9.2 (версия "Expert F #" упоминает как версию используется в книге):

Я ничего не нашел в версии 1.9.5 - существовал ли он когда-либо?

Ответы [ 3 ]

13 голосов
/ 11 февраля 2010

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

Незначительные изменения:

  • Многие функции библиотеки были переименован . Первоначально была склонность к подчеркиванию, которое имеет так как был удален, чтобы быть более .Net типа. Так, например Seq.to_array есть сейчас Seq.toArray. Некоторые существенные изменения в async и API котировок тоже.
  • #light теперь используется по умолчанию, вы можете прекратить ставить его в начале каждого файла
  • некоторые изменения в API / объявлениях событий и перечислений (справочник по языку и документы библиотеки на MSDN хороши для получения актуальной информации )
  • больше не нужно, чтобы [<OverloadID>] делал перегруженные функции-члены

Новые функции:

  • Единицы измерения были новыми в Beta1 .
  • comparison и equality были новыми в Beta2 .
  • unmanaged ограничение в RC .
  • (см. "Примечания к выпуску" для различных выпусков, ссылки на которые приведены в предыдущих выпусках, для получения дополнительной информации)
6 голосов
/ 12 февраля 2010

Я работаю над последним (1.9.7.9) и предыдущим (1.9.7.8) выпуском FSharp.

Я заметил много добавленных вызовов checkNonNull в Array, Seq, Reflect и модуле Quotation. Я предполагаю, что эти вызовы были добавлены для защиты библиотек F # от передачи значений NULL из другого языка, такого как C #. Есть понимание Брайана? Функция nullArg создает исключение ArgumentNullException.

let inline checkNonNull argName arg = 
    match box arg with 
    | null -> nullArg argName 
    | _ -> ()
  • Существует новое переопределение ToString в наборе и улучшенное форматирование для печати наборов и карт с помощью sformat aka printf "% A".
  • Некоторая внутренняя очистка BigInteger для использования с .net 4.0.
  • Я вижу много внутренних изменений в асинхронности, как упомянул Брайан.
  • Некоторые внутренние изменения в Event для использования IObserver.

Я закончил просмотр всех измененных файлов fs, и большинство изменений относится к закрытым функциям, которые не предоставляются напрямую. Единственное, что может повлиять на пользователя - это отличная красивая печать наборов и карт.

4 голосов
/ 12 февраля 2010

Ознакомьтесь с примечаниями к выпуску .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...