> two interfaces or concepts requiring a routine of the same name and arguments
> either have to share it
type
A = concept x
p x
B = concept x
q x
C = distinct int
D = distinct int
proc p(v: C) = discard
proc q(v: D) = discard
proc r(v: A) = echo "r for A"
proc r(v: B) = echo "r for B"
var
c = 5.C
d = 7.D
r c # -> r for A
r d # -> r for B
They do not share it. May be I did not understand you correctly...
