Я следую Обучению Андреа Ферретти и пытаюсь определить +
для моего собственного типа.
Мой кортеж:
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 слово +
для моего собственного кортежа?