Skutki uboczne w Scali

W tych dniach uczę się Scali. Mam lekką znajomość Haskella, chociaż nie mogę twierdzić, że dobrze go znam.

Uwaga dla rodziców, którzy nie znają Haskella

Jedną z cech, które lubię w Haskell, jest to, że nie tylko funkcje są obywatelami pierwszej klasy, ale efekty uboczne (nazwijmy je działaniami) są. Akcja, która po wykonaniu, da ci wartość typua, należy do określonego typuIO a. Możesz przekazywać te działania w zasadzie jak każda inna wartość i łączyć je w ciekawy sposób.

W rzeczywistości,łączenie Efekty uboczne to jedyny sposób, w jaki Haskell może coś z nimi zrobić, ponieważ nie można ich wykonać. Raczej ten programbędzie być wykonanym, jest połączoną akcją zwracaną przez twojąmain funkcjonować. Jest to zgrabna sztuczka, która pozwala, aby funkcje były czyste, podczas gdy pozwalając programowi na robienie czegoś innego niż zużycie energii.

Główną zaletą tego podejścia jest to, że kompilator zna części kodu, w których wykonuje się efekty uboczne, dzięki czemu może pomóc w wychwyceniu błędów.

Rzeczywiste pytanie

Czy w Scali jest jakiś sposób, aby typ kompilatora sprawdzał efekty uboczne dla ciebie, tak że - na przykład - masz gwarancję, że nie wykonasz efektów ubocznych wewnątrz określonej funkcji?

questionAnswers(2)

yourAnswerToTheQuestion