Does Scala perform deforestation? If not, then separating construction and deconstruction is an abstraction win but a performance loss. A commenter, brandon, mentions this.<p>That being said, I've always preferred to think in terms of separation of (computational) concerns, something functional programming excels at. And it's often not hard to deforest manually when the time comes.