Оказалось, что функциональное программирование возможно средствами С++. Библиотека FC++ предлагает такую возможность.

Существует в двух ипостасях:

Вторая более предпочтительна, поскольку органично вписывается в де-факто
стандартную библиотеку Boost C++.

По возможностям библиотека сильно косит под Haskell ;)

          0 голосов

Для того, что бы пример запускался нужно достать библиотеку Loki Андрея Александреску (http://ru.wikipedia.org/wiki/Loki, http://sourceforge.net/projects/loki-lib). Читать далее »»

          0 голосов

При использовании Typed Message сообщения рассылаются всем адресатам, подписанных на получение сообщения.

Проблема возникает, когда сообщение не нужно посылать всем адресатам, если оно не может быть принято одним из них. Например, в каркасе приложения главное окно должно закрыться, и посылает всем дочерним окнам сообщение о закрытии, но какое-то дочернее окно не может закрыться прямо сейчас, соответственно адекватным поведением было бы прекращение дальнейшей рассылки сообщения о закрытии и отмене закрытия главного окна.
Существуют ситуации, когда рассылка одного и того же сообщения должна происходить избирательно по адресатам, например, учитывая их состояние. Читать далее »»

          0 голосов

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

          0 голосов

В предыдущей заметке были исправлены ошибки эталонной реализации паттерна проектирования Typed Message. Далее речь пойдет о способе применения паттерна на тривиальном примере на C++.
Как упоминалось ранее, с помощью Typed Message можно определять сущности широковещательных сообщений. Подходящая аналогия для таких сущностей - радиоволны в идеальном радиоэфире.

Постановка задачи
Читать далее »»

* * * * * 1 голосов

Паттерн был опубликован в классической работе Влиссидеса в далеком 1997 году как вариация известного всем Observer.
В отличие от Observer, паттерн Typed Message полагается не на ручную диспечеризацию сообщений с помощью dynamic_cast, а на автоматическую проверку типов компилятором. Именно это свойство Typed Message делает этот паттерн лучшей релизацией идеи широковещательных сообщений на подобии Observer.
При попытке использовать реализацию предложеную Полом Пелетье в той же работе Влиссидеса пользователь сталкивается с неприятностями ввиде выделения лишней памяти, краха процесса и просто неудобства работы с шаблоном. Читать далее »»

          0 голосов