This project was part of my PhD thesis where the main goal was to implement a system that could create programming languages by combining different semantic blocks. It was based on the use of monads and I was happy to build functional, imparative, logic and object oriented programming languages by combining those building blocks. The implementation was developed in Haskell.