Каковы преимущества использования объектов в функциональном языке программирования? - PullRequest
4 голосов
/ 02 февраля 2011

Какова будет веская причина (ы) использовать объекты в функциональных языках программирования? Я вижу, что f # - это функциональный язык программирования, который активно работает на объектной стороне при работе с экосистемой классов .net. Но кроме этого взаимодействия с другими сборками / программами, которые могут быть написаны на c #, почему кто-то решил использовать объекты для декомпозиции программы на функционально-ориентированном языке или стиле?

Может ли смешивание стиля программы помочь или помешать?

Ответы [ 2 ]

5 голосов
/ 02 февраля 2011

Функциональные и объектно-ориентированные конструкции облегчают различные типы расширений. Учитывая дискриминационное объединение в функциональной настройке, легко определить любое количество функций, которые работают с этим типом, но сложно добавить дополнительные типы к типу, поскольку для этого потребуется вернуться к добавлению дополнительного случая в каждую функцию, шаблон которой соответствует по типу. С другой стороны, учитывая базовый тип (или интерфейс) настройки ОО, легко добавлять новые подтипы, но добавить новые операции к базовому типу сложно, поскольку для этого может потребоваться изменение существующих подтипов для добавления реализации новой операции. каждому.

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

0 голосов
/ 11 апреля 2011

Объекты обеспечивают инкапсуляцию, что облегчает крупномасштабное программирование.

Какова будет веская причина (ы) использовать объекты в функциональных языках программирования?

Объекты используются в функциональных языках по разным причинам:

  • Масштабное структурирование программ.

  • Совместимость с существующим кодом ООП (например, в JVM или CLR).

  • Проблемы, для которых способность расширять иерархии классов большим количеством классов естественным образом подходит.

Может ли смешивание стиля программы помочь или помешать?

Может помочь, но было бы неплохо делать это без веской причины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...