... when you see that the Nim compiler is smart enough to differentiate between an array access and a generic call while the programmer has difficulties with the syntax...
var bar: array[1 .. 1, proc (y: int): int]
proc fuzz(x: int): int =
x * x
bar[1] = fuzz
proc foo[x: static int](y: int): int =
y
echo "foo[1](2) = ", foo[1](2)
echo "bar[1](2) = ", bar[1](2)
This prints
foo[1](2) = 2
bar[1](2) = 4