Каковы свойства функций в ФП? Душкин объяснит
Вставка
- Опубліковано 1 лис 2021
- Узнаем, какие свойства функций рассматриваются в рамках функционального программирования.
Курс по функциональному программированию на Udemy: www.udemy.com/course/fp-haskell/
ТГ-канал Романа Душкина: t.me/drv_official
#ФП #Программирование #Функция #ФункциональноеПрограммирование #Haskell #Хаскель #Хаскелл #Видеошпаргалка #РоманДушкин #ДушкинОбъяснит
Все видео по функциональному программированию в одном плейлисте: ua-cam.com/video/bPCBb1U56yw/v-deo.html
И вы всегда можете обратиться к нам за консультациями.
И, кроме того, вы всегда можете написать мне в ТГ: @rdushkin
Википедия пишет: чистая функция - это когда выполняются все 2 условия. 1. Функция является детерминированной. 2. Функция не имеет побочных эффектов.
Из вашего видео к чистоте относится только 2ой пункт. 1ый совсем выделен в отдельное свойство и не относится к чистоте функции.
В википедии эти слова в своё время писал я :)
Если честно, в разных источниках двоякое понимание. Можно считать, что в википедии более полное.
@@dushkin_will_explain ХАХХАХАХАХАХА
Позвольте мне обратить ваше внимание на некоторое противоречие, которое, как мне показалось, имеет место быть в рамках определения того, чем является функция из предыдущего видео, и тем что Вы описываете в этом видео.
В предыдущем видео, Вы даете определение функции.
В рамках этого определения, не может существовать такого понятия как чистая функция, так как в рамках этого определения (что полностью отвечает функциональной парадигме) функция оперирует только теми параметрами, которое определены ей на вход.
В текущем видео, Вы декларируете концепцию чистых функций, которая совершенно не следует из предыдущего определенения. Концепция чистых функций, следует только из того, что в современных языках программирования, существует возможность оперировать параметрами вне множества входящих параметров.
От туда и возникает определение чистых функций - как необходимый инструмент пояснения программистам, которые УЖЕ знакомы с императивным программированием, но не знакомы с функциональным - что факт доступа к любому внешнему аргументу должен быть либо исключен полностью, либо вынесен в отдельную абстракцию, которая лежит за рамками функционального программирования.
Иными словами, чистая функция - это не качество функции в ФП, это необходимый костыль или пояснения для тех, кто испытывает необходимость в рамках современных языковы обратиться за пределы переданных в функцию аргументов.
И именно это, на мой взгляд, требует отдельного пояснения, именно потому, что определение которое Вы дали в предыдущем видео находится строго в рамках парадигмы ФП, но ваша ремарка в этом видео, сбивает человека с толку, когда он начинает думать о функции, как о том, чтодолжно обладать некоей чистотой. При этом никакой чистоты из определения предыдущего видео не следует и быть не может - потому как в нем строго определено множество тех входящих данных которыми оперирует функция.
Благодарю за ценное дополнение.