LINUX.ORG.RU

Концептуальная дыра ФП.

 , , ,


1

2

«Изменяясь, оно остается неподвижным»

Гераклит.

На протяжении нескольких месяцев уже я пытаюсь понять ФП. И пока у меня 2 варианта. Либо я идиот, либо ФП имеет огромную концептуальную трещину в самом основании.

Древние говорили, что нельзя дважды войти в одну и ту же реку. Это значит, что река - это всегда река. Река постоянно меняется, но она остается все той же рекой, и о ней можно говорить как о реке. Что мы имеем в ФП:

(define river-state 1)
(define fu (let ((the-river-state river-state)) (lambda() the-river-state)))
(write (fu))
(define river-state 2)
(write (fu))
(define river-state 3)
(write (fu))
;111
Благодаря лексической области, мы не можем рассуждать о реке как просто о реке, мы (и вызывающий код) вынуждены говорить только о той реке, которая была и которая зафиксирована. У нас здесь вообще нет реки в обычном понимании. Здесь нет абстракции.

Дело тут даже не во времени. Мы вообще лишены возможности рассуждать о вещах в общем смысле. ФП снижает абстракцию. Абстргирование стремиться к нулю. Только ради компиляции мы вынуждены мириться с тем, что наш язык не дает нам возможности расуждать о вещах наиболее естественным путем.

PS Как выяснилось, многие не поняли о чем я говорю. Я говорю здесь о фиксации состояния внутри ф-ции. То что код примера императивен я в курсе, это было сделано преднамеренно, для демонстрации идеи. Не надо капитанствовать по этому поводу.



Последнее исправление: anonimous (всего исправлений: 2)
Ответ на: комментарий от anonymous

Да ты чо спишь штолэ? Река - это и есть пример. По большому счету, в рамках чистого ФП вообще не решается ни одна реальная задача. Там у них есть «грязные» штучки, которые принято не замечать. Как если бы у тебя лежал кусок говна посреди квартиры, и ты бы на нем написал «dirty shit IO», твоя квартира осталась бы чистой, несмотря на гавно, потому что на говне наклеена соответствующяя табличка. Просто по-ночам, тайно, ты будешь его нюхать, ведь тебе это нужно. Но об этом никто не знает.

anonimous
() автор топика
Ответ на: комментарий от anonimous

То ли дело у императивщиков — говно размазано тонким слоем по всей квартире и на нём постоянно поскальзываешься.

PolarFox ★★★★★
()
Ответ на: комментарий от anonimous

Да ты чо спишь штолэ? Река - это и есть пример.

Пример чего? Что должна делать программа и чего нельзя сделать в фп?

anonymous
()
Ответ на: комментарий от anonymous

Он в своей долбанутой манере пытался сформулировать, что в ФП не самым очевидным образом реализуется IO.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Императивщик направляет говно в унитаз. А функциональщик вообще не знает в какой постели его гавно находится сегодня. Для него его не существует, он не контролирует его ничем, кроме синтаксиса.

anonimous
() автор топика
Ответ на: комментарий от anonimous

аналогии от человека не являющегося экспертом в области, умиляют ещё больше, чем аналогии в целом.

qnikst ★★★★★
()
Ответ на: комментарий от anonimous

В твоём понимании говно это IO, да? В фп-языках вроде хаскеля IO-функции можно вызывать только из других IO-функций. Как только попытаешься вызвать IO-функцию из чистой, программа просто не скомпилится, несовпадение типов.

В C у тебя функция может использовать рандом, читать файлы, сеть, глобальное состояние, и если у тебя перед глазами нет исходников самой функции и всех функций, которых она вызывает (рекурсивно), то ты не можешь об этом никак узнать.

PolarFox ★★★★★
()
Ответ на: комментарий от anonimous

Ты так ничего и не понял. Щтучки вроде монады IO в хаскеле нужны не для того, что бы избавиться от «грязных» методов, а для того что бы отделить их от чистых. Если ты так любишь аналогии с гавном, то это равносильно складыванию всего говна в туалет. И если оно вдруг понадобилось, то зайти в туалет, использовать, помыть руки, выйти. Иди учи матчасть и не возвращайся, пока не въедешь.

Aswed ★★★★★
()
Ответ на: комментарий от anonimous

IO является частью чистого ФП

anonymous
()
Ответ на: комментарий от anonimous

Императивщик направляет говно в унитаз. А функциональщик

а принцессы не какают.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.