I don't think it is a good idea to be explicit about `<` being a proc. For me concepts are about (static) duck typing: if it supports `<`, then it satisfies the concept. This is good, because I will want to call `<` on members of the type. I see concepts as a promise that the code I write next will compile when specialized.
I don't really care if `<` is a template or a proc, or possibly it is defined on a different type but `a < b` still compiles because of converters.
