Скажем, я хочу реализовать шину событий с использованием языка программирования OO. Я мог бы сделать это (псевдокод):
class EventBus
listeners = []
public register(listener):
listeners.add(listener)
public unregister(listener):
listeners.remove(listener)
public fireEvent(event):
for (listener in listeners):
listener.on(event)
Это фактически шаблон наблюдателя, но используется для управляемого событиями потока управления приложения.
Как бы вы реализовали этот шаблон с использованием языка функционального программирования (такого как один из вариантов lisp)?
Я спрашиваю об этом, потому что, если вы не используете объекты, для поддержания коллекции всех слушателей все равно потребуется какое-то состояние. Более того, поскольку коллекция слушателей меняется со временем, было бы невозможно создать чисто функциональное решение, верно?