That's Powershell in the Windows world.
1. Dynamic scoping
2. Squashing lists of size 0 to nulls and
size 1 to single elements when they come out of pipes.
3. Incomprehensible API for XML handling.
On the other hand, when a Powershell program starts getting too big, it's pretty trivial to port parts of it to one of the other .NET languages.If you think Scala has a better API for XML handling then you're in for a surprise...