A look inside "filter" function defintion

frame frame86 at live.com
Tue Aug 2 04:06:30 UTC 2022


On Monday, 1 August 2022 at 23:35:13 UTC, pascal111 wrote:
> This is the definition of "filter" function, and I think it 
> called itself within its definition. I'm guessing how it works?

It's a template that defines the function called "Eponymous 
Templates":
https://dlang.org/spec/template.html#implicit_template_properties

A template generates code, it cannot be called, only instantiated.

The common syntax is just a shortcut for using it. Otherwise you 
would need to write `filter!(a => a > 0).filter([1, -1, 2, 0, 
-3])`. Like UFCS, some magic the compiler does for you.


More information about the Digitalmars-d-learn mailing list