@haskellru

Страница 1069 из 1551
Aminion
08.04.2018
17:21:06
Прохожу на степике курс, задание о безопасном итерировании class (Eq a, Enum a, Bounded a) => SafeEnum a where ssucc :: a -> a ssucc a | a == maxBound = minBound | otherwise = succ a spred :: a -> a spred a | a == minBound = maxBound | otherwise = spred a

Failed. Runtime error main: <<loop>> Выдает такое вот.

Локально в терминале все ок

Ignat
08.04.2018
17:25:00
> spred a = spred a

Google
Aminion
08.04.2018
17:35:58
Ох. Спасибо.

Евгений
08.04.2018
20:25:15
не так и сложно, на самом деле. прилично компилировать по возможности раздельно сложнее. просто и сейчас много кто временем компиляции недовольны, что начнется, если она раз в сто больше будет?
Я помню моей первой и единственной серьёзной программой на mlton был не очень большой CRUD, строк так на 5-10 тысяч. Компилировалось оно целую вечность. Но вообще можно запилить полнопрограмный анализ отдельной опцией компиляции

Alister
08.04.2018
20:26:44
скоро у нас кроме компилятора будет отдельный оптимизатор, баг превентер и анализатор который будет крыть матом нерадивых программистов

Alister
08.04.2018
20:54:45
а код тестировать не надо будет

верифайер сам все автоматически верфицирует

Ilya
09.04.2018
01:01:31
как-то рид странно работает. в гхци пробую λ> read "NaN" :: Double NaN в файле задефайнен minusNaN, nan, inf, minusInf :: Double minusNaN = read "-NaN" nan = read "NaN" но при выполнении получаю в этом месте Exception: Prelude.read: no parse что успевает поменяться?

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

а, похоже ieee754 умеет, проглядел когда первый раз его смотрел https://hackage.haskell.org/package/ieee754-0.8.0/docs/Numeric-IEEE.html#v:nanWithPayload

Alexander
09.04.2018
02:58:58
Prelude> read "NaN" :: Double NaN

а, туплю, я тоже в ghci

runhaskell << EOF heredoc> nan :: Double nan = read "NaN" main = print nan EOF NaN

Ilya
09.04.2018
03:14:21
да, я понимаю что выглядит как волшебство. я в итоге поменял на nan из пакетика ieee-754 и всё стало хорошо. почему не работал read забил разбираться

Google
Aleksey
09.04.2018
04:06:03
> 1 / 0 NaN

так что можно и без read :)

Vladimir
09.04.2018
05:05:05
Это как 1/0 получился наном?

0/0 должен был быть, наверное.

Alexander
09.04.2018
05:17:18
поддельный ghci!

Ilya
09.04.2018
05:17:20
Ну как-то не самодокументированно всё равно выглядит

Aleksey
09.04.2018
05:26:38
Это как 1/0 получился наном?
Точно. Это я наврал. 1/0 это Infinity

0/0 == NaN

Imants
09.04.2018
05:27:34
Не удобнее ли ловить NaN Either и т.п.? Напр., своей версией '/'

Alexander
09.04.2018
05:27:52
NaN нормальный же

Vladimir
09.04.2018
05:27:57
Кстати, 0/0 /= NaN ;)

Alexander
09.04.2018
05:27:57
не bottom и замечательно

Aleksey
09.04.2018
05:28:15
Кстати, 0/0 /= NaN ;)
λ> 1/0 Infinity λ> 0/0 NaN λ> 0/1 0.0 λ> (1/0)/(1/0) NaN

Вот прямо скопипастил из ghci

Vladimir
09.04.2018
05:29:06
Aleksey
09.04.2018
05:29:17
nan, это что вообще?

В base нету такой

Imants
09.04.2018
05:29:58
У NaN есть всякие (F/A/M) instances?

Vladimir
09.04.2018
05:30:03
Это нан, можно определить как 0/0, можно как inf/inf, без разницы.

Google
Aleksey
09.04.2018
05:30:27
У NaN есть всякие (F/A/M) instances?
как у значения могут быть инстансы?

Всё логично

Неопределённость же. Нельзя сравнивать такие

Vladimir
09.04.2018
05:32:00
0/0 == NaN
Поинт в том, что нан -- это такой дабл, который не равен себе. Он единственный в своём роде. Чуть не в стандарте описан способ сделать isNaN x = x /= x

Aleksey
09.04.2018
05:32:05
λ> let nan = 0 / 0 in 1 > nan || 1 < nan False

Он ничему не равен, в т.ч. и самом у себе :)

Vladimir
09.04.2018
05:32:54
Вот. Поэтому NaN /= 0/0 ;)

Aleksey
09.04.2018
05:33:17
С этой точки зрения - да :)

Imants
09.04.2018
05:33:43
Ну и что с NaN можно сделать, кроме как словить и выделить в отдельный случай?

Aleksey
09.04.2018
05:34:03
Ничего не делать. Это полезное значение

Вычисления с оным так же дадут NaN (а не эксепшн, например)

Aleksey
09.04.2018
05:34:39
Это полезное свойство

Александр
09.04.2018
05:35:22
Тут на Реддите драма развивается. https://www.reddit.com/r/haskell/comments/8ao7pc/the_monad_complaint_pipeline/ А причиной всему, похоже, послужил этот твит Дяди нашего Боба: https://twitter.com/unclebobmartin/status/982229999276060672

TL;DR Пуристы кричат, как Дядя Боб неправ; прагматики пишут статьи, что не надо быть пуристами, иначе внешние люди будут считать всех хаскеллистов asshole'ами: https://argumatronic.com/posts/2018-04-07-monad-complaints.html

Ilya
09.04.2018
05:43:26
Поинт в том, что нан -- это такой дабл, который не равен себе. Он единственный в своём роде. Чуть не в стандарте описан способ сделать isNaN x = x /= x
Вообще не очень то единственный. Это целая куча значений с разными пейлоадами помимо каноничного нана

Александр
09.04.2018
06:02:41
Так и есть же - многие хаскелисты, это те ещё снобы :)
Некоторое время назад Кметт громко хлопнул дверью и сложил с себя обязанности chairman (ЕМНИП). Так закончилась эпоха академического-пуристического хаскелля, символом которой он и был, и началась эпоха прагматического хаскелля, символом которой стал Снойман.

Aleksey
09.04.2018
06:03:43
Это то тут при чем?

Google
Александр
09.04.2018
06:03:54
И пуристы с тех пор агонизируют, не желая уступать место менее знающим, но более практичным людям

Aleksey
09.04.2018
06:04:18
А, в этом ключе! Тогда согласен, есть такое

Александр
09.04.2018
06:06:06
Окей :)

На Сноймана же часто нападают, что он Хаскелля не знает

Aleksey
09.04.2018
06:11:29
Я лично не считаю, что Снойман не знает Хаскеля (и что такое вообще "знать заскель"?), хоть я и согласен с тем, что Снойман имеет довольно своеобразное мнение о том, как пристало использовать Х в реальных проектах, и иногда слишком форсит оное, как единственное правильное. Но таковым занимаются многие и вне хаскеля тоже. Дядябоб тоже "из этих" :)

Imants
09.04.2018
06:17:28
Если б кто написал рабочий _HC с нуля (на С или ASM), про тех наверное можно смело сказать, что они знают Х

Евгений
09.04.2018
06:19:37
Каждый тимлид таким занимается. Работа у них такая
Только плохой тимлид так делает. Задача тимлида вырабатывать общие практики, это да. Но есть два способа решения этой проблемы -- либо придумывать отсебятину, либо слушать людей в команде и вместе с ними прорабатывать тонкие места

Admin
ERROR: S client not available

Александр
09.04.2018
06:35:57
Прям хлопнул? Мне показалось он просто сказал, что нет сил больше, он устал и уходит.
Когда такие большие люди легонечко закрывают дверь, это все равно получается громко.

P.S. Имел честь беседовать с ним лично. Офигенный мужик.

Alexander
09.04.2018
06:39:20
правильно сделал, нехрен на токсиков время тратить

а то там народ некоторый из практичных, совсем берега потерял

Google
Alexander
09.04.2018
06:40:05
Александр
09.04.2018
06:40:31
Alexander
09.04.2018
06:40:40
+

Александр
09.04.2018
06:41:03
Прикольно. Кого поймал?

Alexander
09.04.2018
06:42:05
запоминать что поймал в какой-то день? увольье

знаю что кметт с женой за мистиков играли

Александр
09.04.2018
06:43:29
Моя коллега до сих пор играет. Правда, я не уверен, что за сервера использует

Dmitry
09.04.2018
06:43:35
Т.е. вы на практике мапили список покемонов в очки? И теперь список покемонов у тебя удалён из головы GC? Молодцы, даже в жизни Хаскель применяете!

Alexander
09.04.2018
06:44:08
если что играли после Zurihack когда возвращались, просто это интереснее чем просто общались

Александр
09.04.2018
07:15:49
если что играли после Zurihack когда возвращались, просто это интереснее чем просто общались
Играть в покемонов всяко интереснее, чем общаться с хаскеллистами

Alexander
09.04.2018
07:16:33
очень интересно откуда в утверждении неявное "или"

Александр
09.04.2018
07:17:34
Ну вот мне интереснее. Так что пойду играть в Покемонов, а не в чате сидеть

Alexander
09.04.2018
07:18:21
зачем сидеть в чате, когда ты в Цюрихе?

впрочем идти играть в покемонов здоровее будет чем сидеть в чате. Ну и одно другому опять же не мешает

Dmitry
09.04.2018
07:20:08
Компромиссное решение — это сделать отображение пойманных покемнов в слова. Поймал 5-6 покемонов, получилось предложение. Отправляешь его в чат.

Александр
09.04.2018
07:20:21
Мои Покемоны называются "два доклада на конец апреля"

Dmitry
09.04.2018
07:26:42
И все по фри-монадам?

Александр
09.04.2018
07:31:27
И все по фри-монадам?
В каком-то смысле да

Alexandr
09.04.2018
08:26:12
Всем привет. Есть массив термов, которые можно посчитать параллельно, потом собираю результаты в другой терм с помощью foldl: let terms = [t1, t2, ...] computations <- traverse (\t -> async $ comput t) terms foldl (\acc t -> do r1 <- acc; r2 <- wait t; return $ Term r1 r2) (pure mempty) computations Хотелось бы выводить результат по мере вычисления, вместо этого, пока foldl не выполнится не видно и результата, как такое можно сделать?

Dmitry
09.04.2018
08:29:06
(не полагаться на ленивость?)

использовать другие средства коммуникации и явный тред, который выводит результаты?

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