template foo*[T: proc](x: typedesc[T]): T = T(nil)
var m = foo(proc (s: int))
(proctype . . . . . . . . .)
(proctype . . . .
(params
(param :s.1 . .
(i -1) .)) . . . .)
It is required to implement default for proc types and #1536 (because std/streams use massive proc pointers)