every filter operates on its input. in this case the input was an array.
every map implementation ive seen has type function(a,b) -> list(a) -> list(b)
select(contains("good/")) is a function from string -> string|void
so map plus a voidable function equals a filter
| just means connect 2 filters
if you have a stream you turn it into a array with the array constructor []
if you have an array you turn it into a stream with the producer operator .[]
the api is super orthogonal and well designed. but you do have to understand the model