So far, we have used simple array data structures in the task list that we created. That is not really what we'll find in real-world scenarios. In real applications, we have to deal with asynchronous data coming from a server.
Handling data in applications behaves very similarly to streams. You take input, transform it, combine it, merge it, and finally, write it into the output. In systems such as this, it's also very likely that input is in a continuous form and sometimes even of infinite duration. Just take a live feed as an example; this type of data flows continuously, and the data also flows infinitely. Functional and reactive programming are paradigms to help us deal with this kind of data more cleanly: ...