Эффективность использования только функциональной парадигмы в Scala

Недавно я купил Programming Scala и читал его. Язык определенно не то, что я ожидал! В частности, кажется, что он реализует почти все известные мне идеи языка программирования, за исключением макросов Lisp и разделения побочных эффектов на уровне типов в Haskell.

Честно говоря, это меня несколько ошеломило. Хотя я считаю, что иметь в своем распоряжении такое количество инструментов приятно, на самом деле я просто искал строго типизированный функциональный язык для JVM. Я полагаю, что мог бы использовать Scala таким образом, но я полагаю, что если я буду взаимодействовать с любыми библиотеками или прохожу через чей-то еще код, я Я столкнусь со многими из этих продвинутых (для меня) вещей ООП - чертами и «линеаризацией иерархии объектов», со всем этим абстрактным и преобладающим бизнесом, синглтонами, пакетами и сопутствующими объектами, неявными преобразованиями ... не говоря уже о различных синтаксические сокращения и сахара.

Люди часто сетуют на программистов, которые пытаются втиснуть стиль одного языка в другой по множеству веских причин. Но не все языки столь же многопарадигмны, как Scala, поэтому, возможно, его сообщество придерживается другого мнения? В F #, например, есть некоторая свобода действий в стилях программирования и в том, сколько ООП вы используете. Но просто прочитав, я не уверен, что это хорошая философия и для Scala.

Могут ли более опытные программисты Scala помочь мне здесь? Отредактируйте для ясности: В основном, Могу ли я безопасно использовать только (или почти все) функции FP в Scala, не беспокоясь о его продвинутой стороне ООП?

Извините за бессвязный вопрос!

16
задан J Cooper 24 November 2010 в 14:20
поделиться