Start Here

A curated path through the concepts that matter most for writing real M code. Work through these in order — each one builds on the last.

What's Next

Once you're comfortable with the core path, explore these topics in any order.

Lazy Evaluation

How M only computes values when they're actually needed, and what this means for side effects and performance.

Structured Data

Working with nested tables, lists, and records — expanding, combining, and transforming hierarchical data.

Date, Time & Duration Types

The five temporal types in M, how to convert between them, and the pitfalls that trip up even experienced M developers.

Identifiers & Scoping

How M names are scoped inside let blocks, the @ self-reference operator, and why recursive functions need special syntax.

Practical Patterns

Ready-to-use recipes: date dimension tables, recursive list flattening, parameterized queries, and more.