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

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

Примечание в скобках для тех, кто не знаком с Haskell

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

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

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

Актуальный вопрос

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

15
задан Will Ness 20 October 2016 в 15:51
поделиться