FP is dead

Jun. 5th, 2015 12:37 am
thedeemon: (house)
[personal profile] thedeemon
.. as a topic. Помните, было такое "структурное программирование"? Люди в чатиках конца шестидесятых срались на тему СП vs. GoTo, кричали "considered harmful!", писали посты на своих печатных машинках, такая движуха была. И где оно все, почему прекратились срачи? Все основные языки впитали в себя (или взросли на) СП, и тема рассосалась. Наблюдая за интенсивностью тем об ФП на разных форумах, в ЖЖ, в журнале ПФП и прочих интернетах, в этом году могу констатировать аналогичную ситуацию: ФП как темы больше нет, расходимся. Все основные языки впитали в себя (или взросли на) ФП, по крайней мере полезные его части (первоклассные функции, ФВП, лямбды, замыкания, иммутабельность, произведение типов, копроизведение типов, экспонента, применение этого всего в первую очередь в виде map/filter/reduce), а бесполезные части оказались выкинуты на задворки, в уголке музея эзотерики на них всегда можно будет полюбоваться, но в основном только там. Думаете, другая часть ФП еще себя покажет, и расширение линз Кана вправо-вверх вдоль контравариантного функтора еще выстрелит? Не будет этого, dead end.

Date: 2015-06-04 05:52 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
даже хаскелл впитал в себя что-то из функционального программирования, надо признать.

Date: 2015-06-04 05:59 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Да, хаскелл неплохо бы проапгрейдить.

Date: 2015-06-04 06:01 pm (UTC)
From: [identity profile] os80.livejournal.com
Расшифруйте для несведущих, пожалуйста. Понимаю, что объяснять шутки это моветон, но иногда можно :-)

Date: 2015-06-04 06:07 pm (UTC)
From: [identity profile] nponeccop.livejournal.com
Ну, в хаскеле несерьёзное отношение к рантайм-ошибкам и системе типов. Есть, куда расти.

Date: 2015-06-04 06:08 pm (UTC)
From: [identity profile] os80.livejournal.com
А серьёзное где?

Date: 2015-06-05 12:20 pm (UTC)
From: [identity profile] nponeccop.livejournal.com

В тотальных языках и языках с зависимыми типами. Agda, Idris, ATS

Date: 2015-06-04 08:26 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Хм, ну если декларируется функциональность, так уже давайте избавимся от функции head, которая и не функция вовсе - к примеру говоря.

Date: 2015-06-04 10:04 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
нутк тогда придётся и от функции println избавиться кое-где

Date: 2015-06-05 12:19 am (UTC)
From: [identity profile] juan-gandhi.livejournal.com
в монаде - пожалуйста

Date: 2015-06-05 06:58 am (UTC)
From: [identity profile] sassa-nf.livejournal.com
ну так и head в монаде ничего :)

Date: 2015-06-05 07:58 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Прилюдный head безмонадный же. А был бы в монаде (которой, кстати?), был бы неюзабельным, много простого красивого кода превратилось бы в тыкву с do-нотациями.

Date: 2015-06-05 08:04 am (UTC)
From: [identity profile] dmytrish.livejournal.com
Мне вот интересно, как бы выглядел Хаскель, в котором чистые функции уже явно в монаде Identity. Стал бы рефакторинг чистых функций в монадные легче?

А do-нотация вместо let не так уж и плоха, вот только бы вместо >>= какой-нибудь менее шипастый синтаксический сахар.

Date: 2015-06-05 08:11 am (UTC)
From: [identity profile] nivanych.livejournal.com
> Прилюдный

Нравится ;-)

Date: 2015-06-05 08:29 am (UTC)
From: [identity profile] sassa-nf.livejournal.com
дык, это же Exception monad. Можно даже явно где-то catch написать. Более того, о том же и речь, что (скажем, скальный) println в монаде неявно точно так же, как head.
Edited Date: 2015-06-05 08:32 am (UTC)

Date: 2015-06-05 03:06 pm (UTC)
From: [identity profile] nponeccop.livejournal.com

Ну тут более одного решения. Эффект можно обозначить или устранить. head может или возвращать эффект, или принимать непустой список, или принимать список и отдельным параметром витнесса его непустоты. Ну, вы поняли. Фантомные витнессы довольно выразительны даже в System F, но у нас не настоящая логическая система в системе типов, т.к. ложь есть в аксиомах :(  В-общем, множественные проблемы.

Date: 2015-06-05 09:42 am (UTC)
From: [identity profile] Игорь Петров (from livejournal.com)
Да просто прелюдия - это тупая калька с замшелых и убогих SML-ных первазивов, доработанная напильником в самых очевидных местах. Вон, в более идиоматичных для хаскеля lens никаких мин в head нет и то, как обрабатывать пустой список можно решить и легко организовать уже на месте применения призмы/траверсала, составной часть которого аналог head является. Понятно, что в то время, когда писался head даже адовое решение в стиле пакета safe было недоступно - монады на хаскеле тогда не выражались, constructor classes не было, ну и совершенно верно то, что в числе прочего из-за уродливости и "карательности" хаскельного монадного синтаксического цианида решение в стиле safe - никакое не решение.
Вообще, хаскельным разработчикам пора бы уже додуматься, что жестоко карать за использование монад больше не надо, все уже все поняли, в углу постояли, а надо брать примеры хотя бы с разработчиков идриса, которые наоборот, стараются пользователям монад как-то подсластить жизнь.

Date: 2015-06-05 10:44 am (UTC)
From: [identity profile] dewshick.livejournal.com
в Maybe?
вот тогда пришлось бы работать над тыквой делая её читаемее и короче, вместо того чтобы сидеть на двух стульях

Date: 2015-06-05 11:09 am (UTC)
From: [identity profile] zeit-raffer.livejournal.com
Как говаривал Пушкин:
Прилюдный head монадным print она, обмолвясь, заменила.

Date: 2015-06-05 08:43 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Справедливо!

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 26th, 2026 01:30 am
Powered by Dreamwidth Studios