Guide¶
The Makrell# guide should grow into the main practical documentation for:
expressions, calls, and operators
functional flow
pattern matching
CLR interop
compile/load workflows
MRON and MRML usage from the .NET implementation
Current implemented slice¶
Makrell# already includes:
MBF parsing with optional whitespace preservation
MRON parsing to
JsonDocumentMRML parsing to
XDocumentcompile-time
metaand Makrell-defined macrosCLR interop through imports, constructors, member calls, and generic call forms
dynamic compile/load and replayable compile-time metadata
Everyday Makrell# shape¶
Makrell# works best when ordinary Makrell code and CLR-facing code feel like parts of the same language rather than two disconnected modes.
Core example:
{fun add [x y]
x + y}
add3 = {add 3 _}
[2 5 8] | {map add3} | sum
That gives you a familiar Makrell functional style before you even get to .NET-specific features.
Pattern matching and flow¶
Makrell# already includes a meaningful pattern-matching slice, which is important because it gives the implementation a recognisable Makrell feel instead of being only an interop layer over C#.
Example:
{match [2 5]
[x=_ y=_]
{when x < y
x + y}
_
0}
CLR interop as a first-class use case¶
An important part of the Makrell# design is that .NET access is treated as part of the core experience.
Example:
{import System.Text}
sb = {new StringBuilder []}
{sb.Append "Makrell#"}
{sb.ToString}
Makrell-shaped generic type forms such as (list string), (dict string int),
and (array string) are part of the same idea: stay close to Makrell structure
while still fitting the CLR world.
Compile/load workflow¶
Makrell# also matters because it is not only interpreted source-to-runtime plumbing. It already has a real compilation and loading story:
emit C#
compile assemblies
load compiled modules
inspect replayable compile-time metadata
That makes the .NET track especially relevant for tooling, packaging, and larger runtime integration stories.
Practical next pages¶
After this guide page, the most useful follow-ups are: