Реализация псевдонимов списка может не использовать макросы. Вот пример FPR, как реализовать нужные попы из индексного метода псевдо:
define <my_n_pop'exp> "<list'exp>[ ].[ ]pop_index[ ]\(<num'exp>\)" as {
evaluate typeof_item(<list'exp>) {
if(<list'exp>.size()> <num'exp>) {
value = <list'exp>[<num'exp>];
<list'exp>.delete(<num'exp>);
}else {
error("error : This list is has the size of ",<list'exp>.size(),"and you requested item",<num'exp>);
};
};
};
Использования внутри кода будет выглядеть примерно так:
i=l.pop_index(2); // pop the item with index 2. All greater indices will decrease by 1.
На самом деле, с помощью этого макроса вы получите хорошее сообщение об ошибке, если вы попытаетесь использовать его с чем-то, что не является списком. В нем говорится, что «выражение» i «не является списком» и указывает как макрос, так и исходную строку, в которой используется макрос. –