Как я могу удалить определенные элементы из списка (= многозначный атрибут) с помощью карты? Например, предположим, что я хочу отфильтровать все b в заданном списке:
<["a", "b", "c", "b"]: {<table.(it)>}; separator=",">
table ::= ["b":, default: key]
Желаемый результат будет "a,c", но фактический результат будет "a,,c,"
Дело в том, что карта успешно превращает b в нули, но затем они заворачиваются в анонимный шаблон {} и становятся ненулевыми значениями. Так что с функцией strip() они тоже никуда не денутся.
Итак, вопрос в том, можно ли отфильтровать список с помощью карты, немного изменив приведенный выше код?
обновить
Я нашел обходной путь:
filter(it) ::= "<if(it)><it><endif>"
<["a", "b", "c", "b"]: {<table.(it)>}: filter(); separator=",">
Это дает результат, который я хотел: a, c