Efeitos colaterais em Scala

Eu estou aprendendo direito Scala nestes dias. Tenho uma ligeira familiaridade com Haskell, embora não possa afirmar que o conheço bem.

Observação Parenthetical para aqueles que não estão familiarizados com Haskell

Uma característica que eu gosto em Haskell é que não apenas as funções são cidadãos de primeira classe, mas efeitos colaterais (deixe-me chamá-los de ações) são. Uma ação que, quando executada, lhe dará um valor do tipoa, pertence a um tipo específicoIO a. Você pode passar essas ações praticamente como qualquer outro valor e combiná-las de maneiras interessantes.

De fato,combinando os efeitos colaterais são a única maneira em Haskell de fazer algo com eles, já que você não pode executá-los. Pelo contrário, o programa quevai ser executado, é a ação combinada que é retornada pelo seumain função. Este é um truque que permite que as funções sejam puras, enquanto deixa seu programa realmente fazer algo além de consumir energia.

A principal vantagem dessa abordagem é que o compilador está ciente das partes do código onde você executa efeitos colaterais, para que possa ajudá-lo a detectar erros com eles.

Pergunta real

Existe alguma maneira em Scala para ter o tipo de compilador verificar os efeitos colaterais para você, de modo que - por exemplo - você está garantido para não executar efeitos colaterais dentro de uma determinada função?

questionAnswers(2)

yourAnswerToTheQuestion