Almighty Lisp
The Essentials

Table of Contents

  • INTRODUCTION 1
  • GETTING STARTED W/DOOM EMACS & LISP 2
  • LISP FUNDAMENTALS 3
  • EMACS FUNDAMENTALS 4
  • THE LISP IDE 5
  • STRUCTURED EDITING 6
  • BEYOND LISTS 7
  • THE LOOP MACRO 8
  • ERRORS & CONDITIONS 9
  • MACROS 10
  • ORGANIZING CODE 11
  • THE ECOSYSTEM 12
  • Project: Money Library 13
  • Project: Accounting Library 14
  • DEPLOYING 15
  • RESOURCES 16

Table of Contents

  1. INTRODUCTION
    1. WHY I WROTE THIS BOOK
    2. ALMIGHTY
  2. GETTING STARTED W/DOOM EMACS & LISP
    1. INSTALL & SETUP ON MACOS
    2. EMACS DICTIONARY
    3. SURVIVAL EMACS
    4. SURVIVAL LISP COMMANDS
    5. SPEEDING UP W/KEYBINDINGS
    6. NEED HELP?
  3. LISP FUNDAMENTALS
    1. SYNTAX & GRAMMAR
    2. SYMBOLS
    3. FUNCTIONS
    4. LISTS
    5. CONTROL FLOW
    6. ITERATION
    7. STRINGS & I/O
    8. PUTTING IT ALL TOGETHER: TIC-TAC-TOE
  4. EMACS FUNDAMENTALS
    1. SUPPORT LEVEL DISCLAIMER
    2. SETTING EXPECTATIONS
    3. TEXT EDITING
    4. BUFFER NAVIGATION & MANAGEMENT
    5. WINDOW NAVIGATION & MANAGEMENT
    6. PROJECT NAVIGATION & MANAGEMENT
    7. LEARNING MORE
  5. THE LISP IDE
    1. SLY BACKTRACE NAVIGATION
    2. TRACING
    3. STICKERS
  6. STRUCTURED EDITING
    1. SLURPING AND BARFING
    2. DRAGGING FORMS FORWARD/BACKWARD
    3. NAVIGATING THE SEA OF PARENTHESES
    4. MORE RESTRUCTURING & NAVIGATING TOOLS
  7. BEYOND LISTS
    1. OOP
    2. HASH-TABLES
    3. ARRAYS
    4. STRUCTURES
  8. THE LOOP MACRO
    1. Simple Loops
    2. Iterating Over Lists
    3. Iterating Over Vectors and Strings
    4. Iterating over Hash-Tables
    5. Numeric Iteration
    6. Accumulation Clauses
    7. Conditional Clauses
    8. Termination
    9. Manually Updated Variable Bindings
    10. Parallel Iterating
    11. Destructuring
    12. The Step Binding
    13. Running Code Before The First Iteration Or After The Last Iteration
    14. Returning From Named Loops
    15. Combining Everything
    16. When to Use Something Else
    17. A Note on Style: Keywords vs Symbols
  9. ERRORS & CONDITIONS
    1. Signaling Conditions
    2. Defining Conditions
    3. Restarts
    4. Handling Conditions
    5. Preserving Local State
    6. Useful Variables & Functions
  10. MACROS
    1. The almighty-html </> macro
    2. The sxql macro
    3. The Coalton language
    4. Compilation Before Evaluation
    5. Defining Macros
    6. Redefining Macros
    7. Determining When To Use Macros
    8. Determining When Not To Use Macros
    9. Variable Capture & Hygiene
    10. Much More
  11. ORGANIZING CODE
    1. Packages
    2. Systems
    3. Styles of Factoring Packages & Systems
    4. The Great Debate: Package & System Best Practices
  12. THE ECOSYSTEM
    1. ULTRALISP
    2. QLOT
    3. OCICL
    4. VEND
  13. Project: Money Library
    1. Project Setup
    2. A Money Type
    3. Making Money
    4. Adding money
    5. The rest of the math functions
    6. Improving Ergonomics
    7. Formatting for Human Consumption
    8. Adding Currencies
  14. Project: Accounting Library
    1. Requirements
    2. Testing & Examples
    3. Dependencies
    4. Vendor Your Dependencies
    5. Project Setup
    6. Introducing Our Dependencies
    7. Why SQL?
    8. Accounts
    9. Transactions
    10. Legs
    11. Playing around
    12. Account Balance
    13. Long-term problems
    14. Optimization
    15. Example Usage
    16. Tests
  15. DEPLOYING
    1. EXECUTABLE CLI APPS
    2. EXECUTABLE WEB APP
  16. RESOURCES
    1. LISP
    2. EMACS