Stencil(⌺) is the famous operator from Dyalog that enables writing image
processing code in a convenient way. An example would be dilation.

  |dilation←{⌈/{,⍵}⌺(1+2×⍺ ⍺)⊢⍵} ⍝ ⍺ is the radius

The interpreter of Dyalog has a few special code that avoids consing caused by
interpreting the left operand multiple times, if it is in one of the following
forms:

  |   {⍵}      {⊢⍵}      {,⍵}      {⊂⍵}
  |{+/,⍵}    {∧/,⍵}    {∨/,⍵}    {=/,⍵}    {≠/,⍵}  
  |    
  |{  +/,A×⍵}    {  +/⍪A×⍤2⊢⍵}
  |{C<+/,A×⍵}    {C<+/⍪A×⍤2⊢⍵}

Apparently, {⌈/,⍵} is not in it so that is the reason the above APL function
would be implemented that way.

With Co-dfns, APL code is compile to C++ code before execution so consing
should never be worried. However, current version of Co-dfns does not support
stencil directly yet.

  |{⌈⌿⌈⌿¯2 ¯1 0 1 2⌽⍤0 3⊢¯2 ¯1 0 1 2⊖⍤0 2⊢⍵}
  |  

This is similar to dilation but with radius fixed to 2, and the image is
treated as a torus instead of clipping at edge.

Too sad you cannot see this image!
Figure 1. From left to right are original, with dilation ⌈, with erosion ⌊.

Actually, even without been compiled this version is a bit faster than the one
uses stencil, which exceeded my expectation. The compiled version with CPU
backend is much slower, apparently the plain C++ code lacks the magical
optimization done by Dyalog interpreter. (Did I mentioned foreign function call
cost?) I don't have GPU so if someone is able to test please help. The
benchmark is tested on randomized array of shape 1500 1500.

  co-dfns cpu  → 9.9E¯1 |   0% ⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕⎕
  interpreted  → 5.1E¯2 | -95% ⎕⎕
* stencil      → 7.9E¯2 | -92% ⎕⎕⎕

Bibliography

[dilation] Dilation (morphology). Wikipedia. https://en.wikipedia.org/wiki/
Dilation_(morphology).

[Hui20] Towards Improvements to Stencil. Roger Hui. https://www.dyalog.com/blog
/2020/06/towards-improvements-to-stencil/.