This project designs and implements a general-purpose functional programming language with linear types, called Lollipop. The purpose is to investigate how linear types can be a part of modern programming languages. The language should also act as a pedagogical platform for developers to get acquainted with the concept, because linear types are not implemented in any mainstream language on the market. The focus is not to deliver a well-polished product ready for deployment, but rather to evaluate the development process of linear types in a functional language with its complications. The language should, however, have a rigorous type system and have the basic functionality of a functional language, as well as the addition of linear type var...