So, now it's time to get into the real guts of the Spacewar game. The game logic. There are quite a few fun and interesting topics we're going to cover.

These are a few of the questions I want to address:

  1. There are 8,000 lines of code and 777 unit tests. What kind of coverage does that represent? What was the testing strategy for GUI vs. Game Logic?

  2. How does Clojure/spec help us keep our data types under control in a dynamically-typed language? Are dynamically-typed functional languages inherently weaker than statically-typed functional languages? Or are there advantages to dynamic typing?

  3. How do you manage to update complex state when you aren't allowed to change the state of any variables? Does this represent extra work?

  4. Lazy evaluation is a powerful technique, but what kind of trouble can it get you into?

  5. Where does this program go from here?

Prepare yourself for a really interesting, deep technical dive as we walk through Spacewar: Game Logic.