Email the Author
You can use this page to email Paul Marrington about Lispz - Functional Programming for the Single Page Application.
About the Book
Lispz encourages a functional programming style and data immutability in lisp-like syntax for running in the browser. It compiles to JavaScript, so can easily make use of all the JavaScript libraries and packages.
Lisp (without the z) is a functional language with a long pedigree. Only FORTRAN is an older living language. Traditionally it did not address data immutability, although Clojure (a relatively recent arrival) does.
Lispz as part of the Lisp family encourages functional programming. With Lisp, functions are the main form of flow control. Lisp has very few syntax rules when compared to other languages. Not only does this make it easier to learn, but it also encourages problem decomposition into smaller functions.
Lispz supports data immutability at the program level. This means it allows the creation and update of local data within a function but makes it harder and more obvious to change data passed in or from a more global scope. This works well due to the single threading and co-operative multi-tasking nature of the JavaScript VM.
If the Lisp syntax scares you, just remember that change encourages learning. In practice due to the much simpler syntax, it provides a lot less scaffolding than JavaScript, while still making it abundantly clear when a function needs to be decomposed.
Lispz inherits real macros from Lisp. With macros that use the underlying language you can create new domain specific languages to meet any need.
Lispz uses the power of closures from JavaScript to capture variables that can change to the function currently running.
Lispz includes a simple module system to provide name-spacing and separation of concerns.
Lispz is for single-page applications - including
- Riot for web components
- Bootstrap for visual
- Message passing for decoupling
- and much more...
About the Author
After an education in Physics, Maths and Electronics, I "fell" into programming. I was emplloyed to wire up data recorders and ended up writing a program to simulate polution from a power station in Fiji ... and never looked back. From the early days I had an interest in languages and user interfaces. I implemented FORTH and RATFOR systems and wrote what is now called DSLs for industry specific systems.
I did my apprenticeships in C (80s), C++ (90s), Java/J2EE (00s). I worked in GIS before was called GIS and developed my first single page applications long before the name was coined.
I have a strong preference for dynamic typing although I prefer strong typing as being more explcit. I believe in explicit over implicit even when it is not completely DRY. On the other hand I believe that scaffolding hides the meaning of code and makes it harder to maintain. In general I lean towards declarative programming styles - and functional programming supports this.