Функция Rascal с абстрактным шаблоном в качестве формального параметра

#rascal

#rascal

Вопрос:

Я пытаюсь сделать это:

 data A = a(str s);
void show(A a(str s)) = println(s);
A x = a("hi");
show(x);
  

но я получаю эту ошибку:

 |prompt:///|(0,7,<1,0>,<1,7>): The called signature: show(A),
does not match the declared signature:  void show(node);
  

Это потому, что в настоящее время это нарушено (как предполагает страница tutor для абстрактных шаблонов с ограничением типов), или я совершаю ошибку?

Ответ №1:

Я думаю, что это должно быть

 void show(a(str s)) = println(s);
  

где вы видели этот A префикс в tutor?

Комментарии:

1. Спасибо. Я, вероятно, сам придумал этот A префикс (перепутав синтаксис для объявлений функций с обычными параметрами и с параметрами шаблона).