Ilya
тем паче что конфиги они суть функциональные
Ilya
никакой вам императивщины
Ilya
так что справимся
Dmitry
тор тормоз и уязвим
Leonid 🦇
почему '?'
Евгений
большевики в своё время обошлись без твиторов, и их тоже было немного
Зато было меньшиков хуевы тыщи, которые перекрасились в большевиков к середине 17'ого. А они работали через сеть довольно легальных сми.
Кабачок
Кабачок
это аrхиважно!
Евгений
С учебником по юриспруденции. Хитрость всех законов в континууме их трактовок. Правящий класс пишет законы, чтобы максимально лишить возможности "позитивного" использования законодательства, но при этом оставить себе простор для безудержной свободы. Например взять президенсткую власть в России — в 93'ем году конституция была написана так, чтобы президент фактически обладал полнотой исполнительной, законодательной и судебной власти
Arseniy
Это канал про #haskell. Обсудите политику в другом месте, пожалуйста.
Cheese
я не уверен, что правильно воспроизведу, так что см. выше
Alexander
да политоту не стоит тут
Dmitry
посмотрим, как он после девятого будет
Dmitry
хотя мы уже через прокси
Alexander
я не через проксю
Alexander
если на компе есть время то так нет
Alexander
или про какое-то гос прокси?
Dmitry
мы подняли свою проксю в нормальной стране
Alexander
а вижу
Dmitry
что бы телеграм через неё кочегарить
Dmitry
видишь?
Alexander
да
Dmitry
как?
Dmitry
где?
Dmitry
ip видно, что ли?
Alexander
нет, я ж ньюсы ваши вижу
Dmitry
ааа ))
Alexander
есть задача
Alexander
нужно в CI отлавливать использование error и громко ругаться
Alexander
есть варианты как?
Alexander
как сделать так чтобы использование trace падало я знаю, хоть это и сложно
Alexander
с учетом того, что человек может это заимпортировать из base в обход custom prelude
Leonid 🦇
grep не предлагать?
Cheese
weeder что-то такое может
Kirill
@q
Kirill
@qnikst вроде hlint такое может, но ты его вроде не любишь?
Alexander
grep может не уловить какой-нить хитрый случай я боюсь
Alexander
но вообще да что-тотакое
Kirill
https://medium.com/the-recon/better-haskell-with-custom-hlint-rules-10424eec2004 из недавнего
Alexander
вообще наверное hlint только с этими правилами - будет весело
Leonid 🦇
hlint же только "синтаксически" проверяет, не?
Leonid 🦇
т.е. let error = "foo" in error не пропалит
Ilya
равенство значений?!
Да. Вопрос такой: как правильно понимать фразу "тип есть множество значений" в контексте хаскеля, а именно ленивости? Населён ли тип Stream? И по какому критерию мы будем собирать это множество значений? Identity (1+1) и Identity 2 войдут оба или как что-то одно? Ведь оба в WHNF. Если как что-то одно, то как мы определяем равенство элементов?
Ilya
Вот примерно так
Ilya
Про WHNF выше было, но без полной ясности (для меня)
Alexander
я не в курсе точно но попробую чтонить сформулировать как с английского вернусь
Кабачок
Обычно про WHNF объясняют в контексте лямбда исчисления, наверно на простой модели проще понять.
Alexander
со стримом я проблемы не понял
Alexander
тот же let loop = loop in loop населяет любой лифтед тип
Alexander
а вот с эквивалентностью уже интереснее
Alexander
равенством т.е.
Cheese
можно, я ещё раз закрою тему политики? простой способ остаться в чатике — http://t.me/tgvpnbot?start=proxy
Ilya
со стримом я проблемы не понял
Со стримом проблемы нет, я привел его просто как иллюстрацию. Сейчас попробую собрать всё прошлое обсуждение в одно сообщение. Ответ на вопрос "что из себя представляет множество значений типа" должен лежать между двух крайностей А и Б. Что это за крайности? А: Значения типа = всевозможные нормальные формы графа, где вершина графа - конструктор нашего типа. Б: Значения типа = всевозможные WHNF графа, где вершина графа - конструктор нашего типа. Если мы принимаемых "А", то тогда тип Stream становится не заселён, так как у него нет нормальных форм. Если мы принимаем "Б", тогда Identity (1+1) и Identity 2 становятся разными элементами множества значений, по скольку это разные WHNF. Обе альтернативы выглядят так себе, значит ответ должен быть "где-то по середине". Может быть определить равенство двух элементов типа t как равенство значений всех возможных функций типа t - > a на этих двух элементах? Причём будем рассматривать только те функции, результат применения которых можно привести в нормальную форму (то есть убрать все редексы). Этим я хочу убрать "уроборос" в определении, иначе придётся так же сравнивать выходные значения этих функций, и мы ни к чему не придём. Например, для равенства двух стримов тогда достаточно будет сказать, что равны результаты применения take n для любого n.
Ilya
Но определение через равенство значений функций плохо тем, что оно не конструктивно
Ilya
Должно быть что-то другое
Alexander
я вообще не знаю зачем равенство
Alexander
мне кажется что множество не формально использовалось в определении
Alexander
@Masteroid ^
Anonymous
в прошлом году равенство обсуждалось http://math.andrej.com/2016/08/06/hask-is-not-a-category/ пришли к выводу, что подходящего равенства еще никто не определил
Alexander
ну откуда оно возьмётся то
Alexander
undefined равно undefined undefiend ?
Alexander
а undefined undefined undefined ?
Евгений
На самом деле вы не можете думать о множестве значений типа, потому что его не существует. Тип надо определить как топологическое пространство (в той или иной вариации)
Alexander
вот^
Alexander
там множество, не в мат смысле
Alexander
а в смысле количество/список, как ещё или в крайнем случае функции (Type,x) -> Bool
Alexander
которая для значения x и типа Type скажет принадлежит ли x типу
Евгений
Ну это не множество, это класс скорее
Евгений
Множество это пара из принадлежности и равенства
Alexander
ну я ж говорю не в мат смысле
Alexander
перечисление? хотя это какой-то порядок обозначает
Евгений
Математический объект, для которого определена принадлежность, а равенство нет, называется тип :)
Alexander
цикл
кана
Множество это пара из принадлежности и равенства
а принадлежность это функция какая-то или что? Некая операция f: x -> Bool?
parket
Множество это пара из принадлежности и равенства
Равенство? Вроде достаточно принадлежности. Если для любого A можно проверить вхождение А в множество В, то множество В является заданным. Разве нет? Т.е. функция принадлежности однозначно задает множество.
kosc
Вечер добрый, можно нубский вопрос по Haskell? В общем, мне надо вызвать функцию a с аргументом 5, передать её результат в функцию b вторым аргументом, а первым аргументом туда передать число 4.
kosc
И я не понимаю, как это правильно комбинировать.