Linker Unsafe
GIF
Как из простых математических конструкций путём композиции получается красота. Люблю такое.
Если кто забыл, for loops делают невозможным отделение итерирования по структуре данных от её обработки. Но Роб Пайк уверен, что вы не должны хотеть такое :-)
Forwarded from Блог*
#prog #go #menacingopensource
Для Go есть пакет filter. Это реализация некоторых FP-like примитивов, написанных самим Робом Пайком. Как он сам пишет в README:
"I wanted to see how hard it was to implement this sort of thing in Go, with as nice an API as I could manage. It wasn't hard.
Having written it a couple of years ago, I haven't had occasion to use it once. Instead, I just use "for" loops.
You shouldn't use it either."
Внутри есть всё то, что мы так любим в Go:
github.com/robpike/filter
Для Go есть пакет filter. Это реализация некоторых FP-like примитивов, написанных самим Робом Пайком. Как он сам пишет в README:
"I wanted to see how hard it was to implement this sort of thing in Go, with as nice an API as I could manage. It wasn't hard.
Having written it a couple of years ago, I haven't had occasion to use it once. Instead, I just use "for" loops.
You shouldn't use it either."
Внутри есть всё то, что мы так любим в Go:
interface{}, рефлексия, отсутствие ленивости, захардкоженность слайсов. Но, конечно, вишенка на торте — это единственный PR, который так и не был смержен, и реакция Пайка на него.github.com/robpike/filter
This media is not supported in your browser
VIEW IN TELEGRAM
Законтрибьютил в
https://github.com/mitsuhiko/indicatif/pull/178
indicatif, теперь можно делать ещё более изощерённые прогрессбары.https://github.com/mitsuhiko/indicatif/pull/178
Что думает опытный человек, но попробовавший раст впервые на одном контесте:
============================
Pavel:
как и многие, я начал изучать го во время контеста.
язык мне понравился. я решил переписать одну свою консольную утилиту с питона на го. код получился очень простым и понятным. и, что важно, у меня совершенно не было ощущения, что я написал плохой код, что мне нужно набраться опыта и так далее. нет, у меня получился хороший код. написание простого кода из коробки — это действительно фича языка.
вдохновившись, я решил заодно изучить раст и переписать утилиту и на него. и началось! куча unwrap'ов, куча преобразований типов, лесенки из Option'ов, непонятные заимствования по ссылке... в итоге код скомпилировался и работал. но он был ужасен. и никакой линтер не подсказывает как именно улучшить код. но я же понимаю, что его можно улучшить.
потом действительно удалось его отрефакторить и сильно упростить. убрал все unwrap'ы, преобразования типов, лесенки из Option'ов, и даже заимствования вдруг стали понятными. код теперь не сложнее кода на го.
раст больше не позиционирует себя как чисто системный язык. теперь он универсальный, в том числе и прикладной. и он одновременно и низкоуровневый, и высокоуровневый. писать на нем прикладной код оказалось не так уж и сложно.
но простота го все равно подкупает. в нем, кажется, довольно тяжело говнокодить, а вот в расте — легко.
============================
Pavel:
как и многие, я начал изучать го во время контеста.
язык мне понравился. я решил переписать одну свою консольную утилиту с питона на го. код получился очень простым и понятным. и, что важно, у меня совершенно не было ощущения, что я написал плохой код, что мне нужно набраться опыта и так далее. нет, у меня получился хороший код. написание простого кода из коробки — это действительно фича языка.
вдохновившись, я решил заодно изучить раст и переписать утилиту и на него. и началось! куча unwrap'ов, куча преобразований типов, лесенки из Option'ов, непонятные заимствования по ссылке... в итоге код скомпилировался и работал. но он был ужасен. и никакой линтер не подсказывает как именно улучшить код. но я же понимаю, что его можно улучшить.
потом действительно удалось его отрефакторить и сильно упростить. убрал все unwrap'ы, преобразования типов, лесенки из Option'ов, и даже заимствования вдруг стали понятными. код теперь не сложнее кода на го.
раст больше не позиционирует себя как чисто системный язык. теперь он универсальный, в том числе и прикладной. и он одновременно и низкоуровневый, и высокоуровневый. писать на нем прикладной код оказалось не так уж и сложно.
но простота го все равно подкупает. в нем, кажется, довольно тяжело говнокодить, а вот в расте — легко.
Как-то однажды знаменитый учитель Кх Ан вышел на прогулку с учеником Антоном. Надеясь разговорить учителя, Антон спросил: "Учитель, слыхал я, что объекты — очень хорошая штука — правда ли это?" Кх Ан посмотрел на ученика с жалостью в глазах и ответил: "Глупый ученик! Объекты — всего лишь замыкания для бедных."
Пристыженный Антон простился с учителем и вернулся в свою комнату, горя желанием как можно скорее изучить замыкания. Он внимательно прочитал все статьи из серии "Lambda: The Ultimate", и родственные им статьи, и написал небольшой интерпретатор Scheme с объектно-ориентированной системой, основанной на замыканиях. Он многому научился, и с нетерпением ждал случая сообщить учителю о своих успехах.
Во время следующей прогулки с Кх Аном, Антон, пытаясь произвести хорошее впечатление, сказал: "Учитель, я прилежно изучил этот вопрос, и понимаю теперь, что объекты — воистину замыкания для бедных." Кх Ан в ответ ударил Антона палкой и воскликнул: "Когда же ты чему-то научишься? Замыкания — это объекты для бедных!" В эту секунду Антон обрел просветление.
via https://ru-lambda.livejournal.com/27669.html
Пристыженный Антон простился с учителем и вернулся в свою комнату, горя желанием как можно скорее изучить замыкания. Он внимательно прочитал все статьи из серии "Lambda: The Ultimate", и родственные им статьи, и написал небольшой интерпретатор Scheme с объектно-ориентированной системой, основанной на замыканиях. Он многому научился, и с нетерпением ждал случая сообщить учителю о своих успехах.
Во время следующей прогулки с Кх Аном, Антон, пытаясь произвести хорошее впечатление, сказал: "Учитель, я прилежно изучил этот вопрос, и понимаю теперь, что объекты — воистину замыкания для бедных." Кх Ан в ответ ударил Антона палкой и воскликнул: "Когда же ты чему-то научишься? Замыкания — это объекты для бедных!" В эту секунду Антон обрел просветление.
via https://ru-lambda.livejournal.com/27669.html
Livejournal
для бедных
(перевод; английский оригинал напр. здесь ) Как-то однажды знаменитый учитель Кх Ан вышел на прогулку с учеником Антоном. Надеясь разговорить учителя, Антон спросил: "Учитель, слыхал я, что объекты - очень хорошая штука - правда ли это?" Кх Ан посмотрел на…
Forwarded from Roman
Offtopic: Прячу пароль пользователя в логах
RegistrationInfo { email: "r", nickname: "a", password: "🤷" }ДэдФуд хорошо пишет:
Тайпклассы вообще много чего решают. Не только expression problem, но и, например, множественную диспетчеризацию. Прикольно наблюдать за некоторыми дискуссиями на хабре о том, кто в ООП-мире в игре должен управлять взаимодействием меча и моба — ответственность ли это меча, моба или менеджера боёв. В ФП-мире ты просто пишешь тайпкласс.
via https://habr.com/ru/post/505928/
Тайпклассы вообще много чего решают. Не только expression problem, но и, например, множественную диспетчеризацию. Прикольно наблюдать за некоторыми дискуссиями на хабре о том, кто в ООП-мире в игре должен управлять взаимодействием меча и моба — ответственность ли это меча, моба или менеджера боёв. В ФП-мире ты просто пишешь тайпкласс.
via https://habr.com/ru/post/505928/
Хабр
Почему функциональное программирование такое сложное
Я несколько раз начинал читать статьи из серии «Введение в функциональное программирование», «Введение в Теорию Категорий» и даже «Введение в Лямбда Исчисление».
psy667> Является ли Observable из rxjs монадой?
mayorovp> Да. А что, есть какие-то сомнения?
Более того, это аж сразу три разные монады (в роли bind могут выступать операторы
Не сразу это понятно, но вообще это замечательно. Хотя в отсутсвии do-нотации в js от этого пользы мало.
mayorovp> Да. А что, есть какие-то сомнения?
Более того, это аж сразу три разные монады (в роли bind могут выступать операторы
switchMap, mergeMap и concatMap).Не сразу это понятно, но вообще это замечательно. Хотя в отсутсвии do-нотации в js от этого пользы мало.