Andrew
supapro.cxx Чат для тех, кто хоть немного знает C++, простые вопросы по реализации, синтаксису и компуктерам - сюда, а для другого есть: /Главный чат по серьезным вопросам — @ProCxx /Чат по обсуждению всего — @fludpac 🚫flood, pron, spam; ✅УВАЖАЙТЕ ДРУГ ДРУГА! https://t.me/supapro
Andrew
Это для совсем зеленых 😅
Andrew
Извините за рекламу
Евгений
Лукс лайк спам
Pavel
да это стеб про кресты
Pavel
С++
Aliester
Дело в том, что характерной чертой социопатов является то, что они не умеют сопереживать, сочувствовать, испытывать чувство вины и привязанности
Антон
eahqzsr
Если я хочу применить список функций к списку аргументов, то zipWith id fList aList - это самый нормальный способ?
A64m
zipWith ($)
eahqzsr
ну учитывая что $ - это инфиксная форма id с низким приоритетом, то где смысл?
Алексей
Читаемей. Сразу видно, что речь идёт о приминении функций
кана
ну учитывая что $ - это инфиксная форма id с низким приоритетом, то где смысл?
в том и смысл, что $ воспринимается как применение, а id более общий и нужно еще додуматься, что он будет вести себя как $
A64m
оказывается видео с icfp 2017 все еще выкладывают
A64m
смотреть и слушать то что уже выкладывали обычно почти невозможно, правда
Cheese
На этой неделе новых вакансий не замечено, но вот эти ребята всё ещё нанимают: ⭐️ Biocad (@Mensh) ⭐️ HXR (@hxr_haskell_job) ⭐️ Kaspersky Lab (@cblp_su, @icrbow) ⭐️ metrix.ai (jobs@metrix.ai, @wormholio) ⭐️ Tweag I/O (@qnikst) ⭐️ Typeable.io (@catamorphism) ⭐️ getshop.tv не нанимает активно, но можно слать резюме на nickolay@getshoptv.com
A64m
кайнды убрали - а значит самое время начинать писать книгу в которой слово кайнд встречается по бразиллиону раз на страницу
A64m
http://reasonablypolymorphic.com/types.pdf
Vitaly
Библиография смешная
Vitaly
Но пусть пишет, вообще с type level программированием всё плохо, вон, well typed даже платные курсы с секретным контентом запускает.
кана
> кайнды убрали То есть? TypeInType?
да их даже без typeintype выпилили из core
Антон
да их даже без typeintype выпилили из core
А что предлагается взамен?
Евгений
Зашибись, хотели lazy idris, получили lazy nurpl
Антон
分解物質
кана
так, прошелся по ревизиям coresyn.hs, там никогда и не было упоминания каиндов, хоть @bravit111 вроде рассказывал, что были
Sergey
типы
то есть они унифицировали работу с HKT или что, или как?
Евгений
типы
Ага, только тайпчекинг не стопится, в отличие от старого доброго кайнд-чекинга
Sergey
или просто вернулись к тайплевел лиспу?
A64m
раньше было 0 :: Int :: * :: BOX терм тип кайнд сорт теперь 0 :: Int :: Type :: Type :: Type :: Type терм и типы ол зе вей даун
Vitaly
так, прошелся по ревизиям coresyn.hs, там никогда и не было упоминания каиндов, хоть @bravit111 вроде рассказывал, что были
Так в ast они были за счёт параметров атд, операции то все те же, что и для типов
Евгений
А какой тип у тайпклассов?
кана
Maybe :: Type -> Type
Евгений
Type -> Type, небось
Евгений
А вот Constraint :: Type или как?
кана
ну да, похоже, все рано или поздно попадает в Type
Евгений
Ага, универсум джирарда xD
Евгений
Вообще всё-таки под универсумом обычно понимают непротиворечивые пространства типов
Антон
Вообще всё-таки под универсумом обычно понимают непротиворечивые пространства типов
Всё-таки не совсем понимаю, почему в Haskell решили сделать вложенные универсумы?
кана
Add * :: *. Why do this? One alternative is to go the route of Coq and Agda and have an infinite tower of type universes. But, this adds a lot of complexity. These languages take this route because * :: * makes a language inconsistent as a logic. However, Haskell is already inconsistent as a logic (because of undefined and GHC.Exts.Any) and so we don't have to worry about a new source of inconsistency. Furthermore, the type safety of Haskell does not depend on its own consistency -- unlike Coq and Agda, Haskell relies on the consistency of a coercion language, which is not threatened by * :: *.
Евгений
Всмысле почему typeintype, а не type1 :: type2 :: type3? Я думаю, что из-за "практического" направления. "Практикам" зависимые типы нужны, в основном, как способ строить абстракции, а не инструмент доказательства корректности
Евгений
Add * :: *. Why do this? One alternative is to go the route of Coq and Agda and have an infinite tower of type universes. But, this adds a lot of complexity. These languages take this route because * :: * makes a language inconsistent as a logic. However, Haskell is already inconsistent as a logic (because of undefined and GHC.Exts.Any) and so we don't have to worry about a new source of inconsistency. Furthermore, the type safety of Haskell does not depend on its own consistency -- unlike Coq and Agda, Haskell relies on the consistency of a coercion language, which is not threatened by * :: *.
На самом деле в этом тексте лукавят: в сабже была консистентность, но на уровень выше: тайп :: кайнд. Можно было развивать её дальше, сделать зависимые кайнды, индуктивные кайнды и т.д. Вместо этого получилось что получилось
Евгений
Конечно люди, разрабатывающие гхц умнее меня, но умозрительно кажется, что есть вероятность, что тайп-левел магия перестанет завершаться. И мы получим не только 50гб памяти на компиляцию, но и бесконечное время
Алексей
UndecidableInstacnes довольно чтобы получить незавершимость
Ilya
объясните, как это все кайнды имели сорт BOX? почему только один сорт, и что из себя представляли бы кайнды других сортов
A64m
там же стек ограничен, так что бесконечного времени не будет
Слава
О Box В хаскелле такое можно? http://www.eelis.net/C++/analogliterals.xhtml
Евгений
там же стек ограничен, так что бесконечного времени не будет
Ну это если оптимизатор не свернёт рекурсию в бесконечный цикл
A64m
какой там цикл на тайплевеле то. да и оптимизатор для коерций только
Антон
Лол, питонисты не умеют в HOF: https://www.codewars.com/kata/525f3eda17c7cd9f9e000b39/solutions/python/all/newest
eahqzsr
Почему не могут?
Антон
Почему не могут?
Посмотри, какое там решение в топе
eahqzsr
Сначала сам решу потом посмотрю. Но вообще то 5 кю и питон - не удивительно что там будет джунское решение
eahqzsr
Посмотри решения на хаскеле 6-5 кю. Там такие затейники есть
eahqzsr
Вообще codewars народ юзает чтобы языку учиться. И у многих питон - первый язык
eahqzsr
Я часто задачки 2 раза решаю - сначала своим умом, потом просматриваю чужие решения, беру лучшее и потом решаю ещё раз по памяти
кана
Тестируешь память?
кана
Других причин решать по памяти, а не по пониманию, нет
eahqzsr
В смысле по памяти = не поглядывая в решения. Перевожу память в навык так сказать.
eahqzsr
Посмотри, какое там решение в топе
Вот моя первая попытка: https://www.codewars.com/kata/reviews/5b0ce29de86c548f16000e76/groups/5b42309c6c7654379b000ce7 да, про id дефолтный я не подумал
eahqzsr
Кстати, есть такая функция в хаскеле choise pred f1 f2 x = if pred x then f1 x else f2 x?
Алексей
ifM где-нибудь должен быть
eahqzsr
Или ifA ?
Алексей
Нет, нужно достать Bool из предиката
eahqzsr
ifM в Control.Cond но в старой версии на codewars такого модуля нет
eahqzsr
Хотя у меня оно в Control.Monad.Extra
Антон
Кстати, есть такая функция в хаскеле choise pred f1 f2 x = if pred x then f1 x else f2 x?
if' cond t e = if cond then t else e choice pred f g x = if' (pred x) f g $ x
Антон
http://hayoo.fh-wedel.de/?query=%28a+-%3E+Bool%29+-%3E+%28a+-%3E+b%29+-%3E+%28a+-%3E+b%29+-%3E+a+-%3E+b
eahqzsr
Ха, походу я даже функцию правильно назвал
A64m
зачем специальная функция если можно просто liftA3 bool?
Alexander
А мы продолжаем с Владиславом Сабановым разрабатывать движок текстовых игр. Сделали второй каст. (link: https://youtu.be/yjwSRfFjKnM) youtu.be/yjwSRfFjKnM
eahqzsr
Что-то у меня liftA3 bool не тайпчекается