@haskellru

Страница 457 из 1551
Alexander
06.10.2017
15:29:53
grep может не уловить какой-нить хитрый случай я боюсь

но вообще да что-тотакое

Kirill
06.10.2017
15:30:51
https://medium.com/the-recon/better-haskell-with-custom-hlint-rules-10424eec2004 из недавнего

Alexander
06.10.2017
15:34:04
вообще наверное hlint только с этими правилами - будет весело

Google
Leonid
06.10.2017
15:47:17
hlint же только "синтаксически" проверяет, не?

т.е. let error = "foo" in error не пропалит

Ilya
06.10.2017
15:53:10
равенство значений?!
Да. Вопрос такой: как правильно понимать фразу "тип есть множество значений" в контексте хаскеля, а именно ленивости? Населён ли тип Stream? И по какому критерию мы будем собирать это множество значений? Identity (1+1) и Identity 2 войдут оба или как что-то одно? Ведь оба в WHNF. Если как что-то одно, то как мы определяем равенство элементов?

Вот примерно так

Про WHNF выше было, но без полной ясности (для меня)

Alexander
06.10.2017
15:56:22
я не в курсе точно но попробую чтонить сформулировать как с английского вернусь

Pig
06.10.2017
15:57:56
Обычно про WHNF объясняют в контексте лямбда исчисления, наверно на простой модели проще понять.

Alexander
06.10.2017
15:59:50
со стримом я проблемы не понял

тот же let loop = loop in loop населяет любой лифтед тип

а вот с эквивалентностью уже интереснее

равенством т.е.

Yuriy
06.10.2017
16:07:32
можно, я ещё раз закрою тему политики? простой способ остаться в чатике — http://t.me/tgvpnbot?start=proxy

Ilya
06.10.2017
16:54:19
со стримом я проблемы не понял
Со стримом проблемы нет, я привел его просто как иллюстрацию. Сейчас попробую собрать всё прошлое обсуждение в одно сообщение. Ответ на вопрос "что из себя представляет множество значений типа" должен лежать между двух крайностей А и Б. Что это за крайности? А: Значения типа = всевозможные нормальные формы графа, где вершина графа - конструктор нашего типа. Б: Значения типа = всевозможные WHNF графа, где вершина графа - конструктор нашего типа. Если мы принимаемых "А", то тогда тип Stream становится не заселён, так как у него нет нормальных форм. Если мы принимаем "Б", тогда Identity (1+1) и Identity 2 становятся разными элементами множества значений, по скольку это разные WHNF. Обе альтернативы выглядят так себе, значит ответ должен быть "где-то по середине". Может быть определить равенство двух элементов типа t как равенство значений всех возможных функций типа t - > a на этих двух элементах? Причём будем рассматривать только те функции, результат применения которых можно привести в нормальную форму (то есть убрать все редексы). Этим я хочу убрать "уроборос" в определении, иначе придётся так же сравнивать выходные значения этих функций, и мы ни к чему не придём. Например, для равенства двух стримов тогда достаточно будет сказать, что равны результаты применения take n для любого n.

Google
Ilya
06.10.2017
16:56:27
Но определение через равенство значений функций плохо тем, что оно не конструктивно

Должно быть что-то другое

Alexander
06.10.2017
17:03:02
я вообще не знаю зачем равенство

мне кажется что множество не формально использовалось в определении

@Masteroid ^

Paul
06.10.2017
17:27:22
в прошлом году равенство обсуждалось http://math.andrej.com/2016/08/06/hask-is-not-a-category/ пришли к выводу, что подходящего равенства еще никто не определил

Alexander
06.10.2017
18:24:08
ну откуда оно возьмётся то

undefined равно undefined undefiend ?

а undefined undefined undefined ?

Евгений
06.10.2017
18:32:38
На самом деле вы не можете думать о множестве значений типа, потому что его не существует. Тип надо определить как топологическое пространство (в той или иной вариации)

Alexander
06.10.2017
18:34:32
вот^

там множество, не в мат смысле

а в смысле количество/список, как ещё или в крайнем случае функции (Type,x) -> Bool

которая для значения x и типа Type скажет принадлежит ли x типу

Евгений
06.10.2017
18:36:25
Ну это не множество, это класс скорее

Множество это пара из принадлежности и равенства

Alexander
06.10.2017
18:41:05
ну я ж говорю не в мат смысле

перечисление? хотя это какой-то порядок обозначает

Евгений
06.10.2017
18:49:29
Математический объект, для которого определена принадлежность, а равенство нет, называется тип :)

Alexander
06.10.2017
18:51:47
цикл

Google
kana
06.10.2017
19:19:32
Множество это пара из принадлежности и равенства
а принадлежность это функция какая-то или что? Некая операция f: x -> Bool?

ParkeT
07.10.2017
09:08:20
Множество это пара из принадлежности и равенства
Равенство? Вроде достаточно принадлежности. Если для любого A можно проверить вхождение А в множество В, то множество В является заданным. Разве нет? Т.е. функция принадлежности однозначно задает множество.

Hot
07.10.2017
17:31:46
Вечер добрый, можно нубский вопрос по Haskell? В общем, мне надо вызвать функцию a с аргументом 5, передать её результат в функцию b вторым аргументом, а первым аргументом туда передать число 4.

И я не понимаю, как это правильно комбинировать.

То есть мне надо b (4 (a 5))

Alexander
07.10.2017
17:39:53
опять дз?

Hot
07.10.2017
17:42:19
Лол, у кого-то бывают ДЗ на Haskell?

Нет, я просто для себя учу.

Сам я Python-программист.

А Haskell - это хобби.

illiatshurotshka❄️
07.10.2017
17:43:49
топ вопросы

Hot
07.10.2017
17:44:06
Ну я только начал.

В Душкине 1 главу прошёл.

Там в конце задачи.

Застрял на третьей.

Функцию-то определил, а протестить не могу.

А не, это я просто даун.

А как объявить тип функции, которая просто возвращает значение, но ничего не принимает?

func -> a?

illiatshurotshka❄️
07.10.2017
17:51:14
func :: a

Google
Hot
07.10.2017
17:56:13
Ага, спс.

Alexander
07.10.2017
18:06:15
про как передать, так же как в питоне Запиши и убери лишние запятые и скобкм

Олег
07.10.2017
18:08:55
В питоне было бы a(4, b(5)). Не сработает :)

Pig
07.10.2017
18:10:21
А если типы такие? b :: Num a => a -> () a :: Num a => (a, ()) -> ()

Alex
07.10.2017
18:10:42
а в чем проблема с b 4 (a 5)?

Pig
07.10.2017
18:12:14
То есть мне надо b (4 (a 5))
в том, что тут были лишнии скобки

Alexander
07.10.2017
18:19:35
В питоне было бы a(4, b(5)). Не сработает :)
убрать лишние запятые и скобочки и все сработает

преобразование чисто механическое

illiatshurotshka❄️
07.10.2017
18:20:18
добавлять скобочки тоже придется

Mansur
07.10.2017
18:22:12
можно вначале в S-выражение перевести, а потом сработает удаление лишних скобок :) b(4, a(5)) -> (b 4 (a 5)) -> b 4 (a 5)

illiatshurotshka❄️
07.10.2017
18:26:24
не понятно что имелось в виду под "сработает"

Олег
07.10.2017
19:02:05
Потому что убрать лишние скобки и запятые будет недостаточно

Yuriy
07.10.2017
19:02:11
немного неидиоматично, но сработает

Олег
07.10.2017
19:02:15
Я это имел ввиду :)

добавлять скобочки тоже придется

Alexander
07.10.2017
19:47:09
мелочи

уточняю, возьми питонокод, поставь скобочки вокруг каждого аргумента, потом убирай лишние скобочки и запятые

illiatshurotshka❄️
07.10.2017
20:44:27
оч неэффективно

Alexander
07.10.2017
21:07:34
зато сработает

Google
Alexander
07.10.2017
21:07:47
после двух раз подобный вопрос задаваться не будет

т.е. я бы сказал, что если цель это понимание, то вполне эффективно раз оно после главы книги не появилось

kir
08.10.2017
07:53:26
@olegyam Начал бы ты с лиспа, тебе было бы понятнее. Хаскелль, по синтаксису, суть lisp extension с операторами.

kir
08.10.2017
07:54:54
Ничего, просто после лиспа синтаксис хаскелля перестанет быть для тебя проблемой.

Олег
08.10.2017
07:55:26
С чего ты взял, что синтаксис хаскеля для меня проблема?

kir
08.10.2017
07:56:23
А, пардон, перепутал тебя с @hotkosc

Олег
08.10.2017
07:57:05
Ничего страшного :))

Dmitry
08.10.2017
08:32:01
надо просто запомнить, что обычно в ЯП в функцию передается кортеж.С SML еще пошло

Ilya
08.10.2017
08:48:35
Или можно сказать, что в haskell все функции по умолчанию каррированы, а в большинстве остальных ЯП - декаррированы

Dmitry
08.10.2017
08:49:24
это сложнее

Alexander
08.10.2017
14:25:44
@bravit111 а в твиттере можно и по другому чятик рекламировать ;)

Vitaly
08.10.2017
14:26:04
Как?

Ладно, я исправился.

Alexander
08.10.2017
14:32:56
да все хорошо:) так тоже нормально было

Vitaly
08.10.2017
14:57:05
Вот, явно моя работа!

Denis
08.10.2017
14:58:46
Вот, явно моя работа!
Верная гипотеза!

Страница 457 из 1551