Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Understanding FP in an enterprise application context (in Scala)

Most examples (if not all) that I see are the sort of a function that does some sort of computation and finishes. In that aspect, FP shines. However, I have trouble seeing how to apply it in the context of an enterprise application environment where there's not much of algorithms going on and a lot of data transfer and services.

So I'd like to ask how to implement the following problem in FP style.

I want to implement an events bus service. The service has a register method for registering listeners and publish for publishing events.

In an OO setting this is done by creating an EventBus interface with both methods. Then an implementation can use a list to hold listeners that is updated by register and used in publish. Of course this means register has a side effect. Spring can be used to create the class and pass its instance to publishers or subscribers of events.

How to model this in FP, given that clients of the event bus service are independent (e.g., not all are created in a "test" method)? As far as I can see this negates making register return a new instance of EventBus, since other clients already hold a reference to the old instance (and e.g., publishing to it will only publish to the listeners it knows of)

I prefer a solution to be in Scala.

like image 502
IttayD Avatar asked Mar 21 '11 20:03

IttayD


1 Answers

I think you should have a closer look at functional reactive programming techniques. Since you want something in Scala, I suggest reading Deprecating The observer pattern paper by Ingo Maier, Tiark Rompf and Martin Odersky.

like image 145
Grzegorz Kossakowski Avatar answered Sep 28 '22 08:09

Grzegorz Kossakowski