Thank you. The doc, at subfilter, does clearly states what filter does.
The examples fail to make clear of this distinction for subfilter. In fact, they are rather not too much helping.
The first one is
[subfilter[one two three]addsuffix[!]]
producing
and we can achieve the very same results with
[enlist[one two three]addsuffix[!]]
This is not very demonstrative.
I suggest these ones:
\define two-wanted() [compare:string:eq[two]addsuffix[*]]
<<.operator-example 1 "[subfilter[one two three]addsuffix[!]]">>
<<.operator-example 1.1 "[enlist[one two three]addsuffix[!]]">>
<<.operator-example 1.2 "[enlist[one two three]subfilter<two-wanted>]">>
<<.operator-example 1.3 "[enlist[one two three]compare:string:eq[two]addsuffix[*]]">>
<<.operator-example 1.4 "[enlist[one two three]filter<two-wanted>]">>
showing that subfilter, finally, is just a nice way to put a name on a sequence of filter operations, for better clarity. 1.2 and 1.3 have the same output: "two*" whereas that of 1.4 is "two"k
In general, the operator of similar effect would gain from comparison like such.