F# на Linux как лекарство для души

А у вас никогда не возникало ощущения, что «вот это» уже надоело? Что хочется чего-то нового? «Вот этим» может быть что угодно: игра, работа, машина. Что-то любое, что повторяется изо дня в день. А в программировании? Под катом вы найдете историю об усталости от C# и выборе более интересного подхода.


rk8efisarq-zaqedx2ztfkztnli.jpeg


Передаю слово автору.


В последнее время я немного устал от C#, бесконечные строчки однотипного кода перестают со временем греть душу. В такие моменты иногда хочется заняться чем-то для души. В моем случае это Linux и F#.


По большей части для меня важно, чтобы я вышел из зоны комфорта. В общем-то я так и сделал, сменил систему и язык.


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


Основное:


  • Нужен легковесный редактор с поддержкой синтаксиса
  • Нужна поддержка F# Interactive
  • Нужна среда .NET
  • Нужен отладчик (впрочем, как и всегда)


Искушенные хаброжители уже смекнули, что »легковесный редактор» + Microsoft = Visual Studio Code. Надеюсь, она у вас уже стоит :)


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


  • Вам необходимо поставить пакет mono и fsharp, для большинства Linux систем инструкцию вы найдете здесь. Хоть в инструкции нет Arch Linux (и основанных на нем дистрибутивов), в стандартном репозитории pacman’a эти пакеты, впрочем, присутствуют, да и в инструкции показано как собрать из исходников, так что проблем возникнуть не должно.


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


  • Также поставим .NET Core 2.0.0 (Runtime + SDK), опять же для большинства систем, вы найдете инструкцию здесь. Для Arch Linux проше всего будет поставить пакеты dotnet и dotnet-sdk-2.0 из AUR. Если что, то вот github После этого, перейдем непосредственно уже к подготовке VS Code к нашей работе.


Поставим расширения для поддержки синтаксиса F#, сборки и управлением пакетами Nuget


iyii4z_kudfogsyxjyyrsmh639s.png


Для полноты можно поставить Nuget manager совместимый с .Net Core


isedgmdc2riw3_zvkbj0vglnct0.png


Поставим расширение для отладки (Да, все правильно, написано C#)


lswhc_sdupaahfntcxsrpufzujk.png


После этого клоним вот этот реп, и далее по инструкции делаем: bash dotnet restore && code. Теперь перезагружаем VS Code и ждем пока расширение «отладчика» докачает свои пакеты и нормально развернется.


На самом деле сейчас уже почти все готово, осталось только протестировать


  • Создаем где-нибудь папку, запускаем там консоль. Далее выполняем: bash dotnet new console lang F# dotnet run. Получаем заветные Hello World from F#!
  • Открываем VS Code в этой папке code .
  • Идем в Program.fs и выделяем кусочек кода и жмем Alt+Enter:


arkiuzhriotofw9hxieeagm_dz4.png


запустится долгожданный F# Interactive.


1covk6gt7ph687y2bh9o-rdadbg.png


Его также можно использовать для более полезных целей:


iebq0us2uesyoeu38zaf51fa68q.png


Далее посмотрим сборку и отладку.


  • Для настройки директивы сборки нажимаем Ctrl+Shift+B и выбираем .Net Core


cpvwcddoaqyz2wskz1ige9mgj2m.png


Автоматически сконфигурированный файл нам менять не нужно.


  • После этого снова нажимаем Ctrl+Shift+B и видим, что сборка происходит успешно:


ztegu3eqlhdbb_yluwxaa-qp0yk.png


  • После этого F5, выбираем также .Net Core и дальше просто меняем путь до программы


g0uuxuqpic7vxhkmfvlmomonohq.png


  • Все, после этого можно поставить точку останова (F9) на нашей единственной строчке и проверить отладчик:


olj_rfdvaf0hybynoyqhjicte04.png


Итак, ваша машина настроена и готова к новым свершениям на замечательном функциональном языке. Приятным бонусом будет то, что ваши наработки можно будет встроить в C# проект (посредством подключения .dll)


Ну мало ли кто не знал)


Об авторе


03f35e9f0dc94a4c86b465f54ed247cd.jpg

Максимилиан Спиридонов — разработчик C#, студент МАИ, Microsoft Student Partner. В профессиональную разработку на .NET пришёл ещё в школе. Более 2,5 лет работает с реальными проектами на WPF (MVVM)+C#, MySQL, более 5,5 лет разрабатывал на C#. Основная сфера интересов сейчас — это мобильная разработка на Xamarin. Также, по воле случая в сфере интересов оказались С/С++ и Linux.

© Habrahabr.ru