From Bash Reference Manual

> A pipeline is a sequence of **simple commands** separated by one of the control operators `|` or `|&`.

From POSIX 2013

> A pipeline is a sequence of one or more **commands** separated by the control operator `|`.

I know that Bash has many extensions to POSIX shells, e.g. `|&`.

But  are the component commands of a pipeline 

- simple commands or 
- just any commands (simple, pipeline again, list, compound, and function)?

In Bash, the following works

> $ for f in ls *; do echo $f; done | cat

but the first component command of the pipeline isn't simple but compound.