This program is an example of functional reactive programming. The program is implemented using Netwire, which is a domain specific language using Haskell for games, robots and simulations. In this program, two balls are continuously moving on the billiard board. Sometimes, a balls crashes against another ball and changes its direction and speed. Watching the movement of two balls are amazing. The program is introduced on the following homepage, http://bitterharvest.hatenablog.com/entry/2015/09/24/164937
How to build your sysytem.
cabal install --only-dependencies