I always thought that the benefit of linked lists was that you could add or remove items (especially not from the end) without having to copy lots of elements thanks to the beau
Structural sharing. If you perform a higher-order function (map, fold, etc) on the list, you return a new instance of a list that shares the pointers of the previous list.
Daniel Spiewak did a marvelous presentation about functional data structures at NE Scala last week. See here: http://www.nescala.org/2011/