Допустим, я хочу реализовать шину событий, используя язык программирования 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)?
Я спрашиваю об этом, потому что, если не использовать объекты, все равно потребуется какое-то состояние для поддержания коллекции всех слушателей. Более того, поскольку коллекция слушателей со временем меняется, невозможно создать чисто функциональное решение, верно?