<https://nim-lang.org/docs/manual.html#overloading-resolution> is how nim finds
the correct proc.
an exact match is preferred, so your local version of min is never called in
any of your examples. instead, in order:
`min(ar1)` `system.min[T](x:openArray[T]):T`
`min(se1)` `system.min[T](x:openArray[T]):T`
`min(1.1,3.3)` `system.min(x,y: float):float`
`min @[10,30]` `system.min[T](x:openArray[T]):T`
`min(10,30)` `system.min(x,y: int):int`
otherwise a local definition is preferred over one included from another
module, iirc, so `min('a','c')` uses your local min