Funções que parecem puras para os chamadores, mas usam mutação internamente

Acabei de receber minha cópia doExpert F # 2.0 e me deparei com essa afirmação, que me surpreendeu um pouco:

Por exemplo, quando necessário, você pode usar efeitos colaterais em estruturas de dados privadas alocadas no início de um algoritmo e depois descartar essas estruturas de dados antes de retornar um resultado; o resultado geral é efetivamente uma função livre de efeitos colaterais. Um exemplo de separação da biblioteca F # é a implementação do List.map, que usa mutação internamente; as gravações ocorrem em uma estrutura de dados separada e interna que nenhum outro código pode acessar.

Agora, obviamente, a vantagem dessa abordagem é o desempenho. Só estou curioso para saber se há alguma desvantagem - alguma das armadilhas que podem vir com efeitos colaterais se aplica aqui? A paralelização é afetada?

Em outras palavras, se o desempenho fosse anulado, seria preferível implementarList.map de uma maneira pura?

(Obviamente, isso lida com F # em particular, mas também estou curioso sobre a filosofia geral)

questionAnswers(7)

yourAnswerToTheQuestion