Sometimes sequence / list / array expressions are better:

```fsharp
let rec getFolderNames (item: ProjectItem) = 
    seq { 
        yield item.Name
        for item in item.ProjectItems do
            if VSUtils.isPhysicalFolder item then yield! getFolderNames item
    }
```