IC
если планировалась, но не получилась, то и не правильная ведь
A64m
да, идея была очень плохая
IC
и это теперь такое напоминание о первородном грехе ФП языков. помним, скорбим..
A64m
они и в пейперах часто вместо этих звездочек греческие буквы писали
IC
в коде до сих пор пишут, транслитом
A64m
первоначально-то эти кайнды-звездочки вообще не языковой конструкцией а конструкцией в сообщениях об ошибках, только в относительно современное время их стало можно аннотировать.
сейчас и другую конструкцию из сообщений компилятора в язык продвигают - {} в forall-ах
Алексей
А что за {}?
Leonid 🦇
а как в серванте делать редирект?
Aleksei (astynax)
Сложна :)
Leonid 🦇
Raw?
Aleksei (astynax)
Ща поищу. Мы делали у себя
Leonid 🦇
https://gist.github.com/alpmestan/757094ecf9401f85c5ba367ca20b8900 вот такое нашел
A64m
А что за {}?
https://github.com/ghc-proposals/ghc-proposals/pull/99
Ю ли я? 🤔
Как сделать частичное применение для второго параметра конструктора типа?
Aleksei (astynax)
https://gist.github.com/alpmestan/757094ecf9401f85c5ba367ca20b8900 вот такое нашел
Примерно так, да. У нас так
newtype RedirectLocation = RedirectLocation
{ unRedirectLocation :: ByteString
} deriving (Eq, Show, ToByteString)
type LocationHeader = Header "Location" RedirectLocation
handle :: ... m (Headers '[LocationHeader...] ...)
handle = addHeader (RedirectLocation "/") ...
A64m
Leonid 🦇
До чего техника дошла
IC
IC
A64m
никак
Alexander
Алексей
Пластмассовый го победил
Евгений
А что оказалось сильней?
Алексей
Не идёт на ум пока
Алексей
А!
Алексей
Пластмассовый го победил,
Фронтенд оказался сильней
Alexander
не сходится
Alexander
если фронтенд оказался сильнее то го проиграл
Алексей
Так го на бакэнде
Alexander
поэтому и проиграл
IC
@astynax тут классику забыли
Aleksei (astynax)
> Пластмассовый го победил,
> Фронтенд оказался сильней
Пластмассовый Го победил.
Роб Пайк оказался хитрей.
О-о, мои Обероны!
(исполняет Никлаус Вирт)
Евгений
Влод
Алексей
Aleksei (astynax)
Влод
хотя вообще хз что там с обероном
я помню в приложении к какой-то книге прочитал что разрабатывается оберон и там тоже всё будет хорошо
Алексей
Встречал я оберонщиков. Странные люди
Влод
король эльфов и фей
Евгений
Алексей
Я так считаю, что подобные шуточки им не повредят
Alexander
в том что половина хаскель-чата фронтендеры есть своя ирония
Alexander
может запилим реактивный фрейворк для ghcjs?
Alexander
с css in haskell и прочими прибаутками
Влод
(не часто читаю этот чат, вроде тут уже несколько модерирующих ботов на сабже запилили)
Влод
чёт наверное в обероне нет дженериков
Влод
хотя в вики встречается generic module
A64m
даже в каких-то поздних оберонах (зоннон или как там его) есть дженерики. даже вирт менее дремучий и пещерный чем пайк
Ю ли я? 🤔
Зоннон вроде уже не виртовский: Designed by Jürg Gutknecht
IC
A64m
а что, оберонщики го не любят?
я их как-то последние лет 10 в интернетах встречать перестал
Влод
Ну а кто го любит
A64m
ну, то, за что го не любят обычно - оберонщики-то как раз любят
Ю ли я? 🤔
На Хабре три года назад была эпичная Неделя Оберона, срач в комментах утроился
A64m
я хабр не читаю
IC
в чём профит использовать alex в качестве токенизатора перед мегапарсеком? (на скорость пока пофиг)
Влод
Denis
Cheese
что не так с 8.4? почему его до сих пор нет на matrix.hackage.haskell.org?
Alexander
И почему люди стремятся воткнуть монаду во все типы, которые могли бы без этого обойтись, а монадические операции могли бы быть выполнены отдельно?
Cheese
Alexander
Монада / Функтор / Аппликатив - это, конечно, очень сильные инструменты, но если есть возможность написать некую машинерию без внесения туда дополнительных свойств (которые получаются вовне так же легко), то такая машинерия становится менее хрупкой и более композабельной
Alexander
Мой поинт: обязательно нужно разделять консерны, если к этому нет явного показания. Вещи, делающие разное, должны быть по максимуму независимы друг от друга.
A64m
ну инстансы монады дают кучу функций, синтаксис и т.д.
A64m
вполне понятно зачем их делают
Alexander
Погоди, я не про инстансы монад.
Alexander
Я про какой-нибудь такой тип:
data Foo a b m = Foo a (m b)
Где сам функтор m можно вообще не пихать сюда, и ничего страшного не произойдет, если он будет
data Foo a b = Foo a b
потому что вся машинерия может быть сделана без монады, а монадические вызовы могут быть сделаны рядом, в каком-нибудь комбинаторе
withFooM :: Foo a b -> m b
A64m
Denis
Foo m a b тогда уж
Denis
функтор то по b
Denis
ну т.е. может и по a, но по b точно