Невозможно определить + в общем? - PullRequest
2 голосов
/ 07 марта 2020

Я следую Обучению Андреа Ферретти и пытаюсь определить + для моего собственного типа.

Мой кортеж:

TUPLE: myBox a ;

Если я создайте свой собственный шаблон c word

GENERIC: my+ ( a b -- c ) 
M: myBox my+ a>> swap a>> swap + myBox boa ;

, затем я могу использовать его для добавления, чтобы добавить содержимое двух myBox вместе

6 myBox boa 7 myBox boa my+

, которые выводят

--- Data stack:
T{ myBox f 13 }

Однако, если попытаться определить + для myBox с помощью:

M: myBox + a>> swap a>> swap + myBox boa ;

, тогда, когда я попытаюсь использовать его:

6 myBox boa 7 myBox boa +

я получу ошибка:

No suitable arithmetic method
"left" T{ myBox f 6 }
"right" T{ myBox f 7 }
"generic" + 

Если я go на странице справки для +, я даже вижу свое определение в списке среди других (ie bignum, complex, fixnum, float и ratio).

Как определить обобщенное c слово + для моего собственного кортежа?

...