Побочные эффекты в Scala

Я учу Scala прямо в эти дни. Я немного знаком с Хаскеллом, хотя не могу утверждать, что хорошо его знаю.

Parenthetical remark for those who are not familiar with Haskell

Одна особенность, которая мне нравится в Haskell, заключается в том, что не только функции являются первоклассными гражданами, но и побочные эффекты (позвольте мне называть их действиями). Действие, которое при выполнении наделяет вас значением типаaпринадлежит к определенному типуIO a, Вы можете передавать эти действия практически так же, как любые другие значения, и комбинировать их интересными способами.

По факту,combining побочные эффекты - единственный способ в Haskell что-то сделать с ними, так как вы не можете выполнить их. Скорее программа, котораяwill будет выполнено, это комбинированное действие, которое возвращается вашимmain функция. Это хитрый трюк, который позволяет функциям быть чистыми, в то же время позволяя вашей программе делать что-то, кроме потребления энергии.

Основным преимуществом этого подхода является то, что компилятор знает части кода, в которых вы выполняете побочные эффекты, поэтому он может помочь вам обнаруживать ошибки с ними.

Actual question

Есть ли в Scala какой-то способ заставить вас проверять тип побочных эффектов компилятора, чтобы, например, вы гарантированно не выполняли побочные эффекты внутри определенной функции?

Ответы на вопрос(2)

Ваш ответ на вопрос