Монадические парсеры

День 2 /  / Зал 2  /  RU / Хардкор. Сложный низкоуровневый доклад, требующий от слушателя знаний технологии.

«Зачем нужны эти ваши монады?» — такой вопрос звучит в сообществе С++ разработчиков с завидной частотой. Традиционно приводятся примеры монадического использования таких типов, как std::optional, std::future и std::expected, но список наиболее используемых монад в мире функционального программирования значительно шире. Вот какие есть монады в Haskell: Maybe (std::optional), Either (std::expected), IO, State, Reader, STM, Par (std::future). Не слишком полезно пытаться понять, что такое абстрактная монада и как она работает. Лучше предварительно изучить, как пользоваться конкретными монадами, какие задачи они решают, и из этого знания вынести базовую интуицию, справедливую для любых монад.

В докладе будут рассмотрены монадические парсеры: чем этот подход отличается от других видов парсинга (комбинаторные парсеры а-ля Boost::Spirit, парсер-генераторы, ad hoc-решения вроде парсящих конечных автоматов и т. д.), какие у него преимущества и недостатки и в чем здесь проявляются такие важные концепции функционального программирования, как функтор, аппликативный функтор и монада.


Скачать презентацию

Наши контакты