Core Concepts

As much as possible, this guide is organized so that you can read it top to bottom (not that you have to read it like that, unless you've got an afternoon free). It tries to avoid referencing concepts or terms that haven't been fully introduced yet.

That's a challenge, though, in something as self-referencing as a programming language. Magpie has a couple of key ideas that can't be understood in isolation: patterns, classes, and multimethods. Classes use patterns for fields and multimethods for behavior. Patterns match on classes and define method specializers. Multimethods are defined using patterns and specialized to classes.

These concepts are core to understanding the language, even though it's hard to separate them from each other. At some point you just have to jump on the carousel and follow it around. When you read these sections and get to a term that hasn't been explained yet, just be patient. By the time you get through all three it should be clear.