## Introduction ##
I've recently taken an interest in [geometric algebra](https://bivector.net)
("GA", not to be confused with [algebraic
geometry](https://en.wikipedia.org/wiki/Algebraic_geometry)!), which goes beyond
the usual ["number line"](https://en.wikipedia.org/wiki/Number_line) in a way
that elegantly models geometric ideas such as circles, volumes, rotations,
etc. I don't want to motivate or advocate for GA itself, since there are plenty
of [much better resources](https://bivector.net/doc.html#five) out there. Hence
I'm going to focus on explanation and implementation of some basic foundations
of GA, since that's a good way to check my own understanding of the subject!
Here's the start of the implementation, to get us
going:
```{.scheme pipe="./show"}
#lang racket
```
```{pipe="./hide"}
;; We'll write our documentation using Scribble
(require scribble/srcdoc
(for-doc racket/base scribble/manual))
;; We'll define a test suite as we go, as a "sub-module" called 'test'
(module+ test (require rackunit rackcheck-lib))
```