Overview

Map .NET 8.0 / C# 12.0 habits to the Musi Book without repeating every construct example.

C# trains readers to expect strong tooling, namespaces, nullable annotations, records, interfaces, LINQ, tasks, and attributes. Musi uses similar clarity but different boxes: records/data hold shape, classes and instances hold behavior, Option names absence, and effects make async or runtime work visible instead of hiding it behind a task-returning method.

Use this guide as a translation journal for C# code. Start with the familiar habit, then ask which Musi construct owns the same promise. A page is successful when it tells you which old instinct to keep and which old shortcut to drop.

Start from the habit that hurts

Habits that still help

  • Keep the C# habit of making API shape readable at the call site.
  • Drop the assumption that every reusable behavior needs an object hierarchy or service object.
  • Keep examples tied to ordinary work: receipts, routes, files, animals, people, rooms, and services.

First false friend

Musi class is a typeclass-style behavior contract, not a CLR class with fields, constructors, and inheritance. If you need a person, car, invoice, or package, start with records or data. If you need any type that can compare, show, encode, or step, use a class with instances.

When to switch to the Musi Book

Stay in this guide while a C# habit is getting in the way. Switch to Values and let, Records, Patterns, Generics, Classes, and Effects when you need the source-of-truth rule.