Подтвердить что ты не робот

Расширенные упражнения F #

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

Есть ли место или книга, где я могу практиковать F # со специально разработанными упражнениями, чтобы изучить особенности языка? Прямо сейчас мне удалось найти веб-сайты, посвященные вводным материалам или общим проблемам программирования (например, Project Euler).

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

Меня также интересовали бы любые хорошие упражнения, которые были разработаны для других языков программирования (например, Haskell).

4b9b3361

Ответ 1

Если вы верите в обучение через практический опыт, Проблемы с Project Euler могут быть упражнениями для вас. Они не ограничиваются функциональным программированием, но их математическая природа хорошо подходит для F # и других функциональных языков. Еще один проект Euler Series - хороший ресурс для запуска Project Euler в F #.

Раньше я изучал Prolog через 99 проблем, но я видел, как люди изучали Lisp, Haskell, OCaml и т.д. через них. Я считаю, что эти упражнения являются полезными ресурсами для изучения F #. Это хорошо спроектированные проблемы. Первые несколько учат вас работать со списками (базовая структура данных в F #). Более сложные проблемы с логикой, деревом и графикой - хорошие возможности для изучения расширенных функций F #. Ниже приведены комплекты решений в OCaml и F #, если они вам нужны для справки.

Ответ 2

Я начал работу, просмотрев первые 50 Project Euler. Это был отличный первоначальный опыт обучения.

Вскоре после того, как я начал активно участвовать в теге Stackoverflow F #. Увидев ответы, предоставленные другими, и чтобы мои собственные исследования были очень образовательными (вы знаете, что они говорят об обучении, это правда).

Тогда мой самый большой опыт был получен от работы над проектами с открытым исходным кодом в F #. А именно FsEye и Unquote. Обе эти идеи пришли к размышлению о моем опыте работы с F # и о том, какие возможности существуют для обогащения экосистемы F #. В случае FsEye это улучшало опыт FSI. В случае Unquote он использовал уникальную функцию F #. Эти два обучения, делая опыт в серьезных проектах, были тем, что действительно привело меня к глубокому пониманию и навыкам в F #.

Ответ 3

tryfsharp.org - отличный сайт для изучения F #. Учебники разбиты по уровню навыков и проблемному домену. Это может быть именно то, что вы ищете.

Ответ 4

HackerRank предоставляет вам алгоритмические проблемы. Существует целая секция, посвященная функциональному программированию и когда вы создаете решение, вы можете выбрать F # в качестве выбранного вами языка.

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