F# News
467 subscribers
7 photos
1.35K links
F# channel
@fsharp_chat

Send your proposals to @fsharp_chat
Download Telegram
Большой код. Учимся генерировать F#-исходники с помощью Fantomas. Часть 3. Модули и типы

В этот раз почти без "фундаментальной" теории, просто очень подробный пошаговый разбор одного генератора. Что делаем, зачем, почему так, а не иначе, и т.д. По существу, ничего сложного, кодогенерация — это всего-лишь ещё одна предметная область со своей спецификой.
Вычислительные выражения: 1. Введение

Древнее зло пробудилось.

На хабре вышел перевод первой части цикла по computation expressions с F# for Fun and Profit.

Тема местами нелёгкая, но рекомендуется к изучению каждому. Даже если не будете писать свои билдеры, полезно внятно представлять, как они устроены внутри.

// Оригинал здесь, на случай если винтажные газогенераторы (типа меня) не узнали статью в гриме.
Воркшоп «Практические задачи решаем функционально»

Ещё двухчастное видео с dotnext: часть 1 и часть 2.

Классический REST API тестируют с помощью curl или Postman. Более новый gRPC тестировать сложнее, потому что на входе и на выходе у него бинарные данные. Нужна утилита, которая умеет сериализовать текстовые данные в бинарные и десериализовать их обратно. Задача кажется сложной, потому что языки описания схемы и данных Protobuf — достаточно развитые. Но решается она просто, если пользоваться правильным инструментом. Мы напишем утилиту на языке программирования F#, используя библиотеку FParsec. Научимся по описанию грамматики писать код и тесты для разбора, построим абстрактное синтаксическое дерево и разберёмся, как применять его для сериализации.
An incursion under C#. Протаскиваем F# в Godot

Вводная статья по связке F# и игрового движка, который на старте активно противится причинению добра. Потребовалось время, чтобы это сопротивление сломить. Данный текст — компиляция опыта по преодолению встреченных препятствий.

До сравнительного анализа F# vs C# vs GDScript дело не дошло. Но если давать оценки без подкрепления следующей статьёй, авансом, то в умелых руках F# хорошо взлетает на Godot, и по мере возрастания сложности начинает обыгрывать конкурентов. Полностью от C#-проекта избавиться не получится, но в перспективе он почти наверняка перестанет быть источником какой-либо информации и превратится в полностью зависимую детерминированную проекцию над Godot и .fs-файлами.
Вычислительные выражения: 4. Типы-обёртки

Под типами-обёртками подразумеваются типы, представляющие ядро билдеров, например: 'a option, 'a Аsync, Result<'ok, 'error> и т.д. Их иногда называют M<'a> в честь того самого слова на букву м.

В этой части говорится о связях данных типов с конструкциями let!, return и return!.
Вычислительные выражения: 6. Реализуем Zero и Yield

Полезно знать, как работает let!, однако в реальности билдеры с этим механизмом характерны для абстракций уровня фреймворка. Для уровня бизнес-логики лучше определять локальные билдеры, которые больше напоминают модифицированные [] или seq {}. Базой таких билдеров являются методы Zero и Yield.
Вычислительные выражения: 8. Реализуем Delay и Run

Метод Delay позволит откладывать вычисления, а то и вовсе игнорировать их, если этого требует выражение в билдере. Run преобразует содержимое билдера во внешний результат на заключительном шаге. В статье он нужен для исполнения отложенных вычислений, которые породил Delay, но в случае бытовых билдеров Run часто выполняет роль builder.Build() из мира ООП.
How to Watch Stories from Instagram