Functions and Calls

Makrell code tends to revolve around expressions, calls, and flow.

Common patterns across the family include:

  • direct calls: {f x y}

  • pipelines: value | f

  • reverse pipelines: f \ value

  • partial application with placeholders

  • operator-head calls such as {+ 2}

This gives Makrell a strong functional flavour even in host ecosystems that are not primarily functional.

The exact available call forms vary by implementation, but the underlying idea is consistent: code should be concise, compositional, and easy to transform.

Representative examples

Direct call:

{add 2 3}

Pipeline:

[2 3 5] | sum

Reverse pipeline:

sum \ [2 3 5]

Placeholder-based partial application:

{fun add [x y]
    x + y}

add3 = {add 3 _}
{add3 5}

Operators as callable forms:

2 | {+ 3} | {* 5}

Why this matters

This style changes how Makrell code reads:

  • calls can stay compact

  • data flow stays visible

  • partial application becomes natural

  • operators and ordinary functions can participate in similar pipelines

That is part of why the Makrell family can support both normal programming-language work and more transform-oriented code.

Implementation notes

MakrellPy

Strong practical support for functional flow and higher-order style.

MakrellTS

Similar direction, with additional TypeScript-facing considerations.

Makrell#

Strongly aligned with the family style while also adapting to CLR interop and a more explicit compile/load toolchain.