
Alexander
27.09.2017
11:26:38
и StM IO () ~ ()

Anatolii
27.09.2017
11:28:29

Дмитрий
27.09.2017
11:28:38
Придётся всё на MLTT переписывать

Anatolii
27.09.2017
11:29:27
@qnikst а я правильно понимаю что UnliftIO сномановское решает туже проблему что и MonadBaseControl ?

Google

Alexander
27.09.2017
11:29:40
без понятия
это moand-control без автовывода и только над IO ?

Anatolii
27.09.2017
11:43:09
я насчет первого не очень понял

Alexander
27.09.2017
11:50:02
хотя тут ошибка по делу
правда не понимаю почему оно работало до этого
@cblp_su помнишь на на monad-control ругался
я нашёл у себя проблему похоже
правда я теперь не понимаю, почему оно раньше работало

Yuriy
27.09.2017
11:55:24

Alexander
27.09.2017
11:55:38
я ещё минимальный case говорил что покажу
у меня withAsync не работало, когда поидее конексты все определяются

Yuriy
27.09.2017
11:56:02
а, это
ты ругался, что сообщение об ошибке не соответствует реальной ошибке

Google

Alexander
27.09.2017
11:58:42
да
это основной point
он остается

Pig
27.09.2017
12:13:49

Alexander
27.09.2017
12:16:06
ура

? animufag ?
27.09.2017
12:16:12

Alexander
27.09.2017
12:17:44
threaded haskell работает в nix в linux subsystem в windows

Pig
27.09.2017
12:17:55
Но он не знает ничего кроме... э... слов?
(@qnikst про аутиную типизацию ты удалил?)

Alexander
27.09.2017
12:18:47
ytn
нет конечно
я даже не читаю чо мы там про типизации пишите
ну и это бы не трогал точно

Andrei
27.09.2017
12:19:36

Anatoly
27.09.2017
12:35:36
сорри за вопрос новичка: почему haskell не диагностирует незавершаемые выражения?
например,
x = x + 1
x -- overflow
?

Vasiliy
27.09.2017
12:37:06
потому что в общем случае это невозможно

Mikhail
27.09.2017
12:38:05
Потому что в общем случае эта задача неразрешима, но есть liquid haskell, который умеет что-то похожее.

Anatoly
27.09.2017
12:38:51
спасибо!

kana
27.09.2017
12:51:08
Траверсалы выглядят как функторы для линз, только ограниченее.

Alexander
27.09.2017
12:51:35
@anatolijs например x = 1:x

Google

Alexander
27.09.2017
12:52:27
это незавершаемая или завершаемая операция?

Anatoly
27.09.2017
12:54:12
это конструирование бесконечного списка
если она будет вызвана, то не завершится

Aleksey
27.09.2017
12:56:32
в хаскеле - завершится

Alexander
27.09.2017
12:56:37
а take 10 x?

Aleksey
27.09.2017
12:56:37
ибо лень

Anatoly
27.09.2017
12:57:39

Aleksey
27.09.2017
12:58:08
length [1..] тоже не завершится :)

Anatoly
27.09.2017
12:58:16
не смотря на бесконечное выполнение в некоторых контекстах, в данном случае все будет в порядке

Alexander
27.09.2017
12:58:39
не знаю, что такое бесконечное выполнение
то, что было бы бесконечным выполнением если нету шаринга или лени?

Anatoly
27.09.2017
13:02:07
я пока не могу понять, как он делает так, что take 10 x завершается

Yuriy
27.09.2017
13:03:18

Aleksey
27.09.2017
13:03:37

Yuriy
27.09.2017
13:03:58

Anatoly
27.09.2017
13:04:12
круто, спасибо!

Alexander
27.09.2017
13:04:31
есть ещё более интересный вариант:
any [ a^n + b^n == c^n | a <- [1..], b <- [1..], c<-[1..], n<-[1..]]

Aleksey
27.09.2017
13:04:34
Хаскель всё вычисляет только тогда, когда это действительно нужно

Alexander
27.09.2017
13:04:38
это завершается или нет?

Google

Alexander
27.09.2017
13:04:55
только transpose для аргументов сделать, чтобы более разумно по ним бегал
вообще есть такая проблема останова
и мы или выкинем кучу программ для которых доказыать не умеем или возьмем не тьюринг полный язык, который не позволит получить незавершаемость

Pig
27.09.2017
13:06:14
что есть структурная?
кажется я только что придумал новый термин. но вообще это как записи в млях работают, даже статья в вики есть https://en.wikipedia.org/wiki/Structural_type_system

Anatoly
27.09.2017
13:26:47
причем, haskell не допускает левую рекурсию при определении бесконечных последовательностей, что понятно
y = y : 1 — не скомпилируется

Denis
27.09.2017
13:27:22
А как ты пытаешься сделать 1 хвостом?

Pig
27.09.2017
13:27:27
+

Alexander
27.09.2017
13:27:28
нет

Denis
27.09.2017
13:27:32
Так оператор просто не работает

Alexander
27.09.2017
13:27:33
тут типы тупо не сходятся
let y = y++[1]
пожалуйста

Anatoly
27.09.2017
13:27:53
точно, спасибо!

Ilya
27.09.2017
13:28:03

Pig
27.09.2017
13:28:14
Правда тут уже take работать не будет afaik

Denis
27.09.2017
13:28:19
Конкатенация слишком прожорливая штука

Alexander
27.09.2017
13:29:02
хорошая шутка

Aleksey
27.09.2017
13:30:30

Denis
27.09.2017
13:31:46
Ну как бы надо полностью пройти 1 и потом хвостом подсоединить второй

Alexander
27.09.2017
13:32:08
вы же не про пример выше?

Google

Aleksey
27.09.2017
13:32:24

Denis
27.09.2017
13:32:47
А что если это два бесконечных списка?

Aleksey
27.09.2017
13:33:49
Ты не поверишь:
λ> take 10 $ [1..] ++ [1..]
[1,2,3,4,5,6,7,8,9,10]
конкатенация - тоже ленивая, начинает отдавать новый список поэлементно

Hot
27.09.2017
13:35:22
Ты не поверишь:
λ> take 10 $ [1..] ++ [1..]
[1,2,3,4,5,6,7,8,9,10]
Слушайте, а где это приглашенька такая у интерпретатора? А то в ghci по дефолту вроде как просто написано "Prelude>"

Aleksey
27.09.2017
13:35:38
в .ghci

Hot
27.09.2017
13:35:53
Это конфиг всмысле?

Aleksey
27.09.2017
13:35:58
:set prompt "\ESC[32mλ> \ESC[m"
можно прямо в репле попробовать

Hot
27.09.2017
13:36:59
Ага, работает.
Спс.

Denis
27.09.2017
13:37:28
Да, но не будет видно что за модули ты уже подключил

Aleksey
27.09.2017
13:37:45
это можно узнать и по-другому
:show modules

Anatoly
27.09.2017
13:41:22

Aleksey
27.09.2017
13:41:44
Вопрос был про завершение и про дороговизну конкатенации :)
Так что в хаскеле конкатенация - сравнительно дешевая

kana
27.09.2017
13:47:22
Чет у меня получился какой-то сложный toListOf
toListOf :: Optic (->) (K (Endo [a])) s s a a -> (s -> [a])
toListOf lens = flip appEndo [] . getK . lens (K . Endo . (<>) . (:[]))