Exploring Languages with Interpreters
and Functional Programming
Chapter Index
H. Conrad Cunningham
27 April 2022
Browser Advisory: The HTML version of this textbook requires a browser that supports the display of MathML. A good choice as of April 2022 is a recent version of Firefox from Mozilla.
Instability Warning: This version of ELIFP is in work beginning in January 2022. The author may change its structure and content without warning. No changes are planned to the 2018 version upon which the this version is based. The stable version is on the Fall 2018 CSci 450 course website.
Feedback Request: The author plans to publish this textbook eventually. He invites anyone using this book to give him feedback on its current structure and content: to point out typos and other errors or suggest improvements and extensions. He can be contacted at hcc AT cs DOT olemiss DOT edu.
Slides: (HTML) Algebraic Data Types
< - Chapter: : as HTML : as PDF
TODO: The figure drawing need to be changed. Current ones only appear in PDF.
Fall 2017-18 ELI ImpCore interpreter modules (prefix syntax) code mostly works but needs a bit of update to match recent changes to ELI Calculator
UNDER DEVELOPMENT
Most of the content of this old chapter went into new chapters 13 and 14, but some was moved to earlier chapters.
Possible future material on modular programming based on:
TODO: Regular Expressions using algebraic data types
Framework Design Using Function Generalization: A Binary Tree Traversal Case Study
I began this effort in Summer 2016 by adapting previous materials from my courses on Functional Programming (primarily), Multiparadigm Programming, Object-Oriented Programming, Software Architecture, Software Families, and Software Language Engineering.
I added new materials in Spring and Summer 2017 to draft the 2017 version of the textbook titled Introduction to Functional Programming Using Haskell.
In Spring and Summer 2018, I began work on an updated 2018 version of the textbook, now titled Exploring Languages with Interpreters and Functional Programming. I broke several of the longer chapters into 2-4 new chapters or appendices. I incorporated new material from my Spring 2018 Software Language Engineering class (e.g. Type Concepts). I also wrote new chapters including the two new chapters on Software Testing.
I retired from the full-time faculty in 2019, so I am no longer made changes driven by my teaching schedule, but I do plan to continue to evolve the textbook.
The 2022 version is a work in progress. I plan to adapt some class materials from 2018 and before that has not yet been incorporated, to make improvements in existing chapters, and to complete missing sections and chapters.
I maintain this textbook as text files in Pandoc’s dialect of Markdown using embedded LaTeX markup for the mathematical formulas and then translate the documents to HTML, PDF, and other formats as needed.