What is the design rationale that `cat` doesn't take list of file names from pipe input? Why did the designers choose that the following does not work?

```
ls *.txt | cat

```

Instead of this, they chose that we need to pass the file names as argument to `cat` as:

```
ls *.txt | xargs cat

```