Мне интересно, как использовать «концепцию» в ним (0.13). У меня есть следующий код:
type
T = concept t
t.a is string
T0 = ref object
a: string
T1 = ref object
a: string
q: string
proc echoT(t: T) : void =
echo "hello " & t.a
echoT(T0(a: "T0"))
echoT(T1(a: "T1", q: "q"))
Однако компилятор ругается при первом вызове echoT:
t.nim(21, 6) Error: type mismatch: got (T0)
Разве это не должно работать так же, как замена объявления echoT
на:
proc echoT[T](t: T): void = echo "hello " & t.a
(который компилируется и запускается), за исключением того, что в концептуальной версии применяется ограничение t.a is string
?
Как заставить компилятор распознать использование концепции?