Как мне использовать «концепцию» в Ниме?

Мне интересно, как использовать «концепцию» в ним (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?

Как заставить компилятор распознать использование концепции?


person shaunc    schedule 31.05.2016    source источник


Ответы (1)


Ваш пример у меня компилируется и отлично работает (Nim 0.13.0). Возможно, вы сделали опечатку в исходном файле?

person Andrew Penkrat    schedule 31.05.2016
comment
Эндрю... хм... хорошо: оригинал совпадает... но когда я помещаю его на новое место, он работает! Что-то не так с моей установкой в ​​исходном месте. (нимкэш?). Спасибо за проверку. :) - person shaunc; 31.05.2016