Kerrigan
в чем соль функциональных языков?
1. Их нельзя использовать в реальном мире 2. У них куча костылей, чтобы сохранять парадигму 3. Они не целиком функциональные
Kerrigan
вот вам 3 стула
heavycharged
я смотрю сейчас форсят haskell и прочие функциональные языки, я смотрю на синтаксис и не всегда могу его понять, точнее, в некоторых случаях мне сложно себе представить, как на них можно написать что-то сложнее лабораторной работы.
Kerrigan
А зачем их использовать в реальном мире?
чтобы унижать императивщиков?
Bugworm
чтобы унижать императивщиков?
это уже что-то наподобии срача между технарями и гуманитариями
Bugworm
когда технарь пытается унизить гуманитария, читая стихи
Kerrigan
сорь, у меня искажение восприятия
Bugworm
короче всё плохо
Bugworm
как обычно
Kerrigan
я уже для изучения чего-либо сделал причиной издевательство над людьми
Kerrigan
не могу иначе как ватсон из анекдота
Alexander
Да, совсем плохо а Раст это всё плохое в себя тащит.
Alexander
Раст стал хоть как-то интересен после того как втянул себя функциональны большой кусок.
Alexander
бред же
Это норм для этого чата.
Kerrigan
бред же
чо за бред, это классификация по побочным эффектам
доня.
Раст стал хоть как-то интересен после того как втянул себя функциональны большой кусок.
ну нет, он стал интересен потому что это afaik первый язык с афинными типами пригодный для продакшона
доня.
Bugworm
бред же
во 1) хуле ты мне сделаешь вовторых пошел нахуй втетьих 3)что ты мне сделаешь, я в другом городе за мат извени
доня.
и какие там костыли чтобы сохранять парадигму?
доня.
сейчас скажет «IO»
Bugworm
лол
Kerrigan
все эти хероборы для монад
доня.
this
Alexander
Видимо алгебраические типы. На которых весь Раст держится.
Bugworm
просто кто-то не осилил
Kerrigan
просто кто-то не осилил
надо мозги ревайрить
Kerrigan
как говорится "не забывайте что знаете и отрастите второй функциональный мозг посреди первого"
Alexander
Ну учитывая что чел сам пишет, что даже синтаксис проблемы вызвал, которого в хаскеле практически нет, так как сахара минимальное количество.
Kerrigan
пойду спать
доня.
все эти хероборы для монад
монады на самом деле к сайд-эффектам никакого отношения не имеют
доня.
все «костыли» заканчиваются на том что мы вводим тип RealWorld который представляет собой состояние внешнего мира
доня.
а сама IO это type IO a = RealWorld -> (a, RealWorld)
доня.
то есть функция которая принимает одно состояние внешнего мира и возвращает другое, изменённое (+ какое-то вычисленное значение, та же строка прочитанная из консоли например)
доня.
а монадой IO сделали просто чтобы такие вычисления удобнее было композировать
доня.
и возможность писать основную логику чистыми функциями и только где надо юзать IO (вместо того чтобы вообще всё писать императивно) — это фича, а не «костыль»
Денис
мне кажется ты слово пропустил в последнем предложении
Денис
а
Денис
нет, это я тупой
Денис
насколько сложно написать на хаскеле reversed proxy?
Alexander
"сложно" это не совсем правильное слово. Я уверен, что легче всего его написать на питоне/перле. Раст тут даже рядом не встанет по простоте.
доня.
насколько сложно написать на хаскеле reversed proxy?
честно — не писал такое в чём там сложность вообще может возникнуть?
Денис
в том, что там основная логика — это IO
Денис
на расте-то это как раз просто довольно сделать. когда подвезут async await станет вообще сказка
Денис
на питоне — проще застрелиться
доня.
я кстати даже нашёл
доня.
https://github.com/fpco/http-reverse-proxy/blob/master/Network/HTTP/ReverseProxy.hs
доня.
в принципе-то никакой особой проблемы с тем что «основная логика это IO» в хаскеле я не вижу
Денис
я правильно понимаю, что он блокирующий?
Alexander
Эээ. Io не имеет отношения к блокировке.
Денис
это уже следующий вопрос)
Alexander
И опять же - асинк - это удобная композиция функций. + В хаскеле я например не уверен нужен ли вообще асинк
Денис
асинк это больше
Денис
асинк это поллинг
Alexander
Так как он вообще ленивый. Т.е. асинк как бы сам по себе. Но это конечно грубо так сравнивать.
Alexander
асинк это поллинг
Это 1/2 асинка мне так кажется.
Денис
ну хорошо, забыли про ревёрс прокси, спасибо за пример, попробую осилить =)
Денис
насколько удобно на хаскелле писать асинхронный io код? :)
доня.
https://hackage.haskell.org/package/async-2.2.1/docs/Control-Concurrent-Async.html
доня.
вот там примерчики есть
Alexander
Я признаться не знаю. Не пробовал.
доня.
надо понимать, что async/await в rust/js/python/c# — это всё +/- частные случаи do-нотации
доня.
которая в haskell есть, причём в отличие от языков которые я перечислил, она работает не только для фьючерсов, промисов и т.д., но и для любых монад
Денис
(я если чё не знаю хаскель)
доня.
Do нотации + ленивости.
не очень понимаю почему ленивость
Денис
подождите
Денис
он там чё потоки создаёт на каждый чих??
Денис
async :: IO a -> IO (Async a) Spawn an asynchronous action in a separate thread.
доня.
где?
Alexander
Вообще мне кажется надо разделить что для чего и какой язык лучше для чего.
Денис
do a1 <- async (getURL url1) a2 <- async (getURL url2) page1 <- wait a1 page2 <- wait a2 тут например
Денис
я в общем-то к этому и вёл
доня.
не системный