В последнее время я стал все больше и больше интересоваться функциональным программированием, и при выборе языка предо мною пал выбор среди двух очень понравившихся мне языков — Haskell и F#.
В F# меня соблазнило то, что его можно компилировать в MSIL сборки, что обеспечивает возможность использования библиотек классов F# в других языках Microsoft .Net, а также то, что он и сам может их использовать. Ко всему прочему, я ещё и начинающий разработчик Unity3D, и мне в голову пришла мысль: если компилируется в MSIL, то может можно использовать F# скрипты в Unity? Гугление дало ответ: по-человечески нельзя. Можно создать библиотеку классов, поставить в проекте ссылки на библиотеку UnityEngine.dll, компилировать и импортировать как ассет, после чего добавлять компоненты Mono-behaviour напрямую из библиотеки, но это не слишком удобно, согласитесь. Однако, пройдя гугл, Reflection и справку по Unity, мне все таки удалось приблизить(но не повторить в точности) работу с F# скриптами внутри редактора к тому виду, в котором производится работа со скриптами на встроенных языках. Подробности — под хабракатом.
F# *
Язык из семейства языков .NET Framework
F# Хвостовая рекурсия. Подводные грабли. Часть 1
Винни Пух: Ой, что это случилось с твоим хвостом?
Иа: А что с ним могло случится?
Винни Пух: Его нет.
Иа: Ты не ошибся?
Винни Пух: Хвост или есть или нет совсем! Тут нельзя ошибиться.
Иа: А что же тогда там есть?
Винни Пух: Ничего!
У нас в проекте, в одном из серверных компонентов, после очередного рефакторинга начала течь память. Казалось бы .NET, F#, менеджед код, сборка мусора, все дела, но память, куда-то утекала. Ценой бессонных ночей и попорченных нервов, источник утечки был найден. Оказалось что проблема вызвана куском кода, который был, чуть ли не один к одному скопирован из учебника по F#.
Все дело было в хвостовой рекурсии, вернее, как оказалось в ее отсутствии в неожиданных местах.
Machete — скриптовая среда для .Net
10 «однострочников», которые произведут впечатление на ваших друзей
Итак, поехали!
Истории
Паттерны Command и Strategy с точки зрения функционального программирования
Введение в F#, the blue pill
Введение
Вот и ожидаемое, или не очень, продолжение. Сегодня мы проглотим синюю пилюлю, гордо олицетворяющую FP (functional programming), и погрузимся в функциональную часть F# еще глубже. Поговорим о функциях, рекурсии, pattern matching'е и еще о нескольких интересных вещах. Интересно? Тогда глотаем таблетку и начинаем погружение.
Введение в F#, или полезное о бесполезном
Вступление
А зачем оно мне?
А почему бы и нет? К примеру, для общего развития, или просто для интереса, а впоследствии, может быть, для того, чтобы убедиться, что F# — не просто язык для ознакомления.
Вдогонку Visual Studio 2010 SP1, новые инструменты для разработчиков
Как вы, наверняка, знаете недавно был выпущен пакет обновления для Visual Studio 2010. Спустя некоторое время стали появляться дополнительные инструменты, про которые стоит рассказать отдельно.
F#: Во что превращается ваш код после компиляции
Давайте на примере часто используемой и полезной техники «меморизация» посмотрим во что превращает ваш код компилятор. Для наглядности я буду писать сам код на F# и декомпилировать его в C#.
Выпущено Mono 2.10 – F# в комплекте
tryfsharp.org — Microsoft выпустил бета версию сайта для онлайн изучения F#
Книга Криса Смита «Программирование на языке F#»
Любая методология разработки, инструмент, технология или язык программирования привлекает к себе внимание по разным причинам. Это может быть нечто инновационное и тогда по прошествию десятка или двух лет (!), до него таки дотянутся руки всего остального компьютерного сообщества. Так было практически со всеми идеями, которым пришлось пройти длительный путь от конференций гиков до признания широкой общественностью. Другим способом ворваться в «мейнстрим» является поддержка уже известного вендора, например такого, как компания … Майкрософт. Большинство людей инерционны и не будут вкладывать свои силы в «нонейм» инструменты, пока не удостоверятся, что их капиталовложение будет востребовано. Если же инструментом занимается подобный вендор, то риск изучить что-то, что не пригодится в будущем, очень не велик.
Опубликованы исходные коды F# 2.0 под лицензией Apache 2.0
Компания Microsoft опубликовала сегодня исходные коды компилятора F# 2.0 и набора других инструментов для этого языка под названием F# PowerPack.
Ближайшие события
Что нам готовит PDC10?
PDC10 — крупнейшая конференция Microsoft начнется уже через неделю 28 октября. Самое время строить догадки и предположения о том, что нового может представить Microsoft для разработчиков.
Пищу для домыслов может дать недавнее обновление программы конференции на сайте http://player.microsoftpdc.com/. В ней появились следующие интересные позиции:
Не остается сомнений, что на PDC расскажут про следующие версии C#, Visual Basic и F#. Пока не ясно будет ли обновление языков проходить вместе с обновлением самой платформы .NET. Я склонен считать, что обновления CLR не будет, нововведения в языки будут введены под индексом .NET 4.1/4.5, но не 5.0.
[Перевод] Я все еще не просек F#
Асинхронное программирование — цепочки вызовов
Когда в коде фигурирует пара вызовов BeginXxx()/EndXxx()
, это приемлимо. Но что если алгоритм требует несколько таких вызовов подряд, то количество методов (или анонимных делегатов) преумножится и код станет менее читабельным. К счастью, эта проблема решена как в F# так и в C#.
Создание DSL на языке F#
Хочу представить сообществу перевод моей статьи на CodeProject, в которой я описываю процесс создания DSLей с использованием языка F#.
Катаморфизм в F#
Введение
Упомяну сразу, данная статья написана по мотивам целой серии постов в отличном блоге Inside F#. Тем не менее она не является переводом в чистом виде, а скорее вольным изложением, чтобы доступным языком объяснить — что же за зверь такой, катаморфизм, и с чем его едят. Слово это думаю не очень на слуху, чего стоит хотя бы тот факт, что статьи по нему нет в русской википедии (и вообще ни в одной национальной, кроме почему-то голландской. Наверно ФП как-то соответсвует духу травокурения)
Итак, строго говоря, катаморфизм в функциональном программировании — это обобщение свертки списков, которые (как я уже рассказывал) являются специфическим типом размеченного объединения, на произвольные размеченные объединения.
Три парадигмы F#
Введение
Все, кто так или иначе связан с .NET программированием знает, что уже в следующую версию Visual Studio будет встроен новый язык программирования — F#, который позиционируется как функциональный, чем сразу, так уж повелось, вызывает подозрения в бесполезности. Для того, чтобы показать, что F# — куда больше, чем просто ФЯП (хотя и просто ФЯП — это очень немало), я и написал все нижеследующее.
Эта статья, несмотря на изрядную длину, не претендует на то, чтобы полностью описать всю функциональность языка. Это всего лишь краткий обзор, призванный продемонстрировать широкий спектр возможностей, каждая из которых заслуживает отдельной статьи, и даже не одной.
Кроме того, написав такой пространный пост, я хотел сделать задел на будущее, чтобы в дальнейшем мне не отвлекаться на незначительные вещи базового уровня. Конечно, сразу головой в пруд — это действенно, но и какой-никакой фундамент не помешает.
А уже в следующий раз я приведу пример на волнующую тему пригодности F# для обычной профессиональной программистской деятельности.
И еще раз, под катом действительно МНОГО текста. И не говорите потом, что я вас не предупреждал. =)
Влюбляемся в F#: Доза 2: Строим фрактальное изображение, или множество Мандельброта своими руками
На прошлом уроке мы рассмотрели основные понятия функционального программирования, теперь давайте попробуем применить их на практике. Поскольку функциональное программирование, как вы наверное поняли, идеально подходит для решения математических задач, то рассмотрим именно такую задачу — построение изображения множества Мандельброта, самого известного фрактального множества.
Вклад авторов
-
shwars 217.2 -
Amper 127.0 -
fillpackart 125.6 -
kagetoki 113.0 -
olegchir 112.0 -
oldadmin 89.0 -
WhiteBlackGoose 79.2 -
ApeCoder 77.6 -
sahsAGU 76.4 -
kernelmode 75.0