= Motivation <motivation>

Block-based programming tools enable a purely visual introduction to programming
for the imperative programming paradigm. Common beginner mistakes, such as
compiling code with incorrect syntax, are impossible in such an environment.
Examples include Scratch, developed by MIT, and the LEGO Mindstorms software.

There aren't many similar tools available to teach functional programming,
which is why most educators start their courses by either showing the
logical nature of functional programming through e.g. the lambda calculus,
or by jumping right into code, leaving many students puzzled.

Some visual approaches to functional programming exist; the ones researched during this project
are covered in @existing_tools. Unfortunately, none seem suitable as an
introduction to general-purpose functional programming.

However, block-based tools don't need to be limited to education: A sufficiently
powerful environment that allows conversion to and from a text-based
programming language could also see adoption among professionals looking for
ways to visualize their code.

