The Lux programming language is a functional language belonging to the Lisp family.

It features a flexible and expressive static type-system, and it's meant to run in a variety of different platforms.

Lux is committed to the functional style of program design, being a purely-functional programming language, while also adopting eager-evaluation over lazy-evaluation, to promote simpler reasoning over the performance and behavior of programs.

Lux also offers novel features in the area of meta-programming, with first-class types that can be examined and constructed at compile-time, monadic macros with access to the state of the compiler, and a style of macro definition that promotes composition and easy interaction between different macros.

While the richness and variety of what Lux has got to offer is much larger than what can be described in this introduction, hopefully I've already mentioned enough to stimulate the curiosity of those interested in advanced concepts in programming languages and computer science, and those engineers seeking powerful tools for both program design and implementation.

Lux is both a simple and a complex language.

Its design allows you to make effective programs with just a small subset of what it has to offer, but the goal of the language is to provide its users with an arsenal of powerful tools to suit their various needs in their projects.

Finally, I must note that Lux is a practical language, meant for day-to-day usage by software engineers, instead of just research and experimentation by academics.

It may seem unnecessary to point that out, but both Lisp-like languages and functional languages have earned a reputation for being academic in nature.

While Lux's design does involve a lot of advanced ideas in computer science, it is with the intention of turning Lux into a powerful and effective tool for day-to-day software engineering.

It is my hope that within these pages the reader will find both a host of new ideas to enrich their perspective on programming, and the promise of great power should they choose to add Lux to their arsenal of programming languages.

I wish you, my dear reader, good luck on this journey, and much fun!

Click here to read the 1st chapter.

Copyright Note

This work is under the Mozilla Public License 2.0, and was published as part of the the Lux repository on GitHub.