Igor
https://t.me/pro_net/129441
Что-то сразу Одерски вспоминается 🌚 https://youtu.be/uqKxB3eRKlY?t=631
Romɑn
https://twitter.com/blakeir/status/1132290145586221056?s=19 Мой первый менеджер был не разработчиком. Вот в чем дело!
Vladislav
https://twitter.com/dsyme/status/1133337653863174144?s=12
Romɑn
https://twitter.com/MichakunGomez/status/1133272321698029568?s=09 Lolище
Romɑn
Когда, кстати, Майкрософт купит хабр?
Yury
когда там побольше на английском будет
Yury
зачем им русскоязычный сайт ? :)
Shub
https://twitter.com/MichakunGomez/status/1133272321698029568?s=09 Lolище
я думал, оно так задумано. оно у меня иначе и не показывалось никогда
Stanisλav
За что в F# командах могут не любить хаскелистов? Для себя на заметку хочу взять)
Stanisλav
Ну имеется ввиду, когда хаскелист начинает бахать код на f#
Hog
https://twitter.com/FSharping/status/1133420470894772224
Hog
Срочно нужна майка с таким принтом :) Кто-нить знает - что это за шрифт?
Andrew
Срочно нужна майка с таким принтом :) Кто-нить знает - что это за шрифт?
https://www.spreadshirt.co.uk/f+everything+mens+premium+t-shirt-D15914496?sellable=26425960
Hog
https://www.spreadshirt.co.uk/f+everything+mens+premium+t-shirt-D15914496?sellable=26425960
нажимаю на штатовкую версию - и меня перекидывают на просто список :(
Andrew
(
Andrew
Там еще и миллиард расцветок
Hog
да это понятно 😊
Andrew
Andrew
🌚🌚🌚
Hog
нету в штатовской версии сайта этого принта :(
Vasily
Ну имеется ввиду, когда хаскелист начинает бахать код на f#
За то, что мир внутри ivory tower отличается от мира снаружи
Doge
За то, что мир внутри ivory tower отличается от мира снаружи
Ну я бы не сказал, что хаскеллисты в реальности в ivory tower сидят.
Doge
Большинство из тех подходов, что в хаскелле юзают около прода, абсолютно и 100% юзабельны.
Shub
За то, что мир внутри ivory tower отличается от мира снаружи
за то, что пытается сделать хаскель из любого языка, при этом все попытки дико неудачны
Shub
вот пример элегантного и читаемого кода на хаскеле например
Shub
{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} import Yesod data HelloWorld = HelloWorld mkYesod "HelloWorld" [parseRoutes| / HomeR GET |] instance Yesod HelloWorld getHomeR :: Handler Html getHomeR = defaultLayout [whamlet|Hello World!|] main :: IO () main = warp 3000 HelloWorld
Shub
если за это не убивать - то за что вообще тогда убивать?
Doge
Например?
Ну вот как пример того, что относительно сложное из хаскеля запросто в ту же скалу перекочевало и активно используется в проде: Фри монады (как пример использования - несколько ORM на скале внутри так и сделаны), TF (и MTL стиль конкретно, тут вообще без комментариев), линзы, refined, авто-вывод тайпклассов через Generic (см. shapeless) и куча основанных на нём вещей, всякая тайп-левел магия (см. shapeless опять-таки) Я уж молчу про всякие базовые вещи типа общих тайпклассов типа функторов, аппликативов, стрелок, монад и т.п.
Doge
Хотя бы servant надо брать
Shub
Ну yesod - это прошлый век же
не для людей на майкрософт стеке. как было правильно замечено, тут еще Гугл на IPO не вышел даже
Hog
Кто такой Гомер и почему его увековечили в этом коде? 😊
Shub
но я тут ошибся немного. хаскелист считает, что можно элегантнее сделать. прям так вот и пишет
Shub
A much cleaned up version of it is:
Shub
instance RenderRoute HelloWorld where data Route HelloWorld = HomeR deriving (Show, Eq, Read) renderRoute HomeR = ([], []) instance ParseRoute HelloWorld where parseRoute ([], _) = Just HomeR parseRoute _ = Nothing instance YesodDispatch HelloWorld where yesodDispatch env req = yesodRunner handler env mroute req where mroute = parseRoute (pathInfo req, textQueryString req) handler = case mroute of Nothing -> notFound Just HomeR -> case requestMethod req of "GET" -> getHomeR _ -> badMethod type Handler = HandlerT HelloWorld IO
Vasily
Ну на фшарпе я бы не стал так писать. Парадигма другая
Vasily
Проблема, как обычно, в попытках натянуть сову на глобус, кмк
Vasily
Каждому языку свой подход
Doge
Ну на фшарпе я бы не стал так писать. Парадигма другая
Я бы вообще на йесоде не советовал писать в принципе. Но это уже другой вопрос
Hog
Wolfenstein хорош
О! я в первый игрался. ещё на 286 😊
Vasily
В хаскель, насколько я понимаю в меру своего скудоумия, при проектировании закладывались иные принципы, чем, например в фшарп или скалу
Андрей
Хотя бы servant надо брать
хотя бы? а что, за ним еще что-то есть?
Андрей
Doge
хотя бы? а что, за ним еще что-то есть?
Особо нет. Разве что scotty для совсем мелочей.
x
смотрю Chernobyl, опять белорусы всех спасли 👌
Hog
смотрю Chernobyl, опять белорусы всех спасли 👌
Джон Вик - участник ликвидации?
Doge
В хаскель, насколько я понимаю в меру своего скудоумия, при проектировании закладывались иные принципы, чем, например в фшарп или скалу
Но многие (не все) приемы и абстракции оттуда ценны и применимы почти во всех статически-типизированных ФП языках.
x
Джон Вик - участник ликвидации?
нет, но похоже он её продукт 🌚
Vasily
Но многие (не все) приемы и абстракции оттуда ценны и применимы почти во всех статически-типизированных ФП языках.
Ну или я пока не писал большой прод, или не вижу практической ценности во всяких readert
Vasily
У тебя фронт же вроде бы?
У меня много всего
Андрей
Особо нет. Разве что scotty для совсем мелочей.
по моей скале жОскости скотти далеко ПЕРЕД сервантом, где-то на уровне фшарпа. А на сервант даже Шефченко плакался. Я уж решил что ты еще ЗА сервантом что-то видел
Vasily
Я в разном плавал
Doge
Ну или я пока не писал большой прод, или не вижу практической ценности во всяких readert
Ценность в том, чтобы контекст удобно прокидывать без необходимости явно через все функции пробрасывать
Doge
по моей скале жОскости скотти далеко ПЕРЕД сервантом, где-то на уровне фшарпа. А на сервант даже Шефченко плакался. Я уж решил что ты еще ЗА сервантом что-то видел
Не, за сервантом вроде бы нет. Видел всякие фантазии скалистов на тему серванта, но некоторые из них по эргономике даже лучше выходят.
Vasily
Т.е. всегда приезжает newState
Doge
Ну по факту он возвращается как новое состояние
Ты не путаешь ли случайно со StateT и т.п.? Ридер - это простая функция же. Он просто cсочетанием функций пробрасывает то, что ему изначально как контекст дали. type Reader[A, B] = A => B type ReaderT[F[_], A, B] = A => F[B]
Vasily
Возможно, путаю
Vasily
Я тупой, мне можно
Vasily
Но получается, что ридер контекст откуда-то должен взять
Vasily
Ну и все это норм работает на хкт
Vasily
Судя по косвенным данным
Vasily
В фшарпе том же будет такое себе
Vasily
Монады ради монад
Vasily
Вот это я не могу понять
Doge
В фшарпе том же будет такое себе
Без ХКТ тоже запросто.
Vasily
Без ХКТ тоже запросто.
Только будет бойлерплейта много
Doge
В фшарпе том же будет такое себе
Ты просто его пишешь под твой конкретный тип с которым работаешь в приложении.
Vasily
И хуй кто код поймёт
Doge
Монады ради монад
Ок, а какие альтернативы, если ты хочешь, например, держать общий контекст для одного запроса к серверу. Передавать его явно руками через все функции?
Doge
IoC контейнер подключить?