
Alex
18.08.2017
10:04:38
тотальность это отсутствие жоп
зацикливание разновидность жопы

Denis
18.08.2017
10:05:26
Ну да) это значит то, что хаск не нормальная категория сет

Index
18.08.2017
10:05:57
Ну начнем с того, что типы /= сеты

Google

Index
18.08.2017
10:06:14
Продолжим тем, что если не игнорировать боттомы, то про Хаскель вообще математически трудно рассуждать и мало что можно сказать

Denis
18.08.2017
10:06:17
Вот тот же y комбинатор это есть разновидность жопы

Index
18.08.2017
10:06:47
Нет

Alex
18.08.2017
10:07:04
ну вообще вроде да, фикспоинт это разновидность жопы

Index
18.08.2017
10:07:18
Y/fixpoint это unrestricted recursion

Denis
18.08.2017
10:07:19
Сам Карри это говорил
Что это некий парадокс

Index
18.08.2017
10:07:34
это только значит, что через него можно выразить боттомы
но не значит, что любое его использование дает боттом

Denis
18.08.2017
12:22:23
https://gitlab.anu.edu.au/mu/mu-client-ghc

Yuriy
18.08.2017
16:09:11
попробую и здесь спросить
дано: data A = forall (b :: B) . SingI b => A (F b)
как из (a :: A) извлечь (f :: F b)?
у меня пока получилось только через SingI построить A -> B, то есть из (a :: A) я могу узнать (b :: B) лежащего внутри объекта, а значит, точно знаю тип (F b)

Alexander
18.08.2017
16:14:29
знать знаешь, но как ты значение построишь. если F это не функтор или т.п.?

Yuriy
18.08.2017
16:44:32
так вот надо не построить, а извлечь

Google

Yuriy
18.08.2017
16:45:39
и даже если функтор, я не смогу построить ровно то, что там лежит
я использую экзистенциальный тип в роли суммы

Alexander
18.08.2017
16:47:35
есть мимимальный код?
лень все писать самому, чтоб поиграться

Yuriy
18.08.2017
16:48:10
попробую написать сегодня

Alexander
18.08.2017
16:51:49
а как это работает?
а туплю
@cblp_su а можешь сигнатуру того ,что ты хочешь написать написать?
ну или F хотя бы что такое

Yuriy
18.08.2017
16:53:56

Alexander
18.08.2017
16:54:13
потому, что я попытался мин пример сделать и или решение тривиальное
но тогда и F и B тривиальные и там и без SingI сработает
но у тебя наверное дургой случай
например, если B ~ Nat то не сработает
ну или что-то плохо перечислимое

Yuriy
18.08.2017
16:56:56
F в данном конкретном случае — data family, где каждый инстанс — простая data из чисел, списков и прочих простых штук
B у меня — конечное перечисление, точнее сумма двух конечных перечислений
что ты называешь тривиальным решением?
в принципе, я могу взять Union F UniverseB, по нему матчить тоже не очень сахар, но я хотя бы знаю, как

Alexander
18.08.2017
17:00:45
проще минимальный пример, а то у меня явное ощущение, что я не то решаю

Google

Yuriy
18.08.2017
17:03:18
нет, сегодня не получится, завтра набросаю пример

Index
18.08.2017
17:04:33
@cblp_su Я чего-то может не так понял, но по фрагменту кода выше чтобы извлечь F b из A надо просто запатеррнматчить
Потому что внутри A как раз и лежит F b

Alexander
18.08.2017
17:05:41
да
вопрос там видимо в том, как с ним сделать что-нить разумное
т.е. там в зависимости от b будут разные данные

Index
18.08.2017
17:06:31
Так для этого там SingI b, по которому можно матчить

Alexander
18.08.2017
17:06:54
ну вот да, по нему матчить и в каждой ветке раскрывать f правильно
(примерно то, что я называл тривиальным решением)

Index
18.08.2017
17:08:28
А вообще здесь A это зависимая пара (b :: B, F b) по сути
Поэтому и операций можно ожидать соответствующих. Извлечь первый компонент, извлечь второй компонент. Матчить по первому, чтобы получить type refinement по второму.
Σ B F

Yuriy
18.08.2017
17:13:35
для этого обязательно положить B явным полем?
data A = forall (b :: B) . A (Sing b) (F b)
что-то такое?

Index
18.08.2017
17:14:12
Sing или SingI — все одно и то же

Alexander
18.08.2017
17:14:12
нет

Index
18.08.2017
17:14:29
из SingI можно получить явный Sing через метод sing
а наоборот через withSingI
со ScopedTypeVariables легко забиндить типа так:
foo (A (fb :: F b)) = case sing :: Sing b of ...

Alexander
18.08.2017
17:15:44
я бы написал kk :: F B -> Sing B ; kk _ = sing но наверняка можно со scopedtypevariables
@int_index чепятает быстрее

Google

Alexander
18.08.2017
17:20:34
да и поточнее

Yuriy
18.08.2017
17:34:11
и там внутри многоточия будет b ~ B42?

Rinat
18.08.2017
17:37:17
Приветствую.
А есть ли возможность отключить возможность ввода опций рантайма при запуске?
Гугл сходу не знает :-(

Dmitry
18.08.2017
17:38:31
-rtsopts={none,some,all}
?

Alexander
18.08.2017
17:40:47
@cblp_su { SB42 -> ... ; SB41 -> ...}
свой hs_main если только сделать

Dmitry
18.08.2017
17:42:12
@qnikst
-rtsopts=none
не будет работать?

Alexander
18.08.2017
17:42:15
https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ffi-chap.html#using-your-own-main
не знаю, давай попробуем
мне казалось оно все равно будет на -RTS ... смотреть
qnikst@qwork ~ $ ghc 1.hs -rtsopts=none
[1 of 1] Compiling Main ( 1.hs, 1.o )
Linking 1 ...
qnikst@qwork ~ $ ./1 -RTS -h
foo
qnikst@qwork ~ $ ./1 +RTS -h
1: RTS options are disabled. Link with -rtsopts to enable them.

Dmitry
18.08.2017
17:43:51
аналогично

Alexander
18.08.2017
17:43:55
т.е. отлючены, но парсер смотит

Dmitry
18.08.2017
17:44:17
а это не то, что хочет топикстартер достичь?

Alexander
18.08.2017
17:44:18
нельзя даже —help сделать
не знаю
Rinat ^^

Rinat
18.08.2017
17:49:57
Хмм
Сек :-)

Google

Rinat
18.08.2017
17:52:19
Работает, спасибо!
Я пробовал вообще убрать rtsopts
Но не сработало, а rtsopts=none делает именно то, что нужно :-)

Denis
18.08.2017
20:45:53
а вообще это кто-то юзает? https://hackage.haskell.org/package/machines-0.6.3
я помню в универе были автоматы Мили, Мура
https://github.com/Copilot-Language/Copilot

Rinat
19.08.2017
05:04:53
Вот последнее интересно! Потыкаю, спасибо)

Alexander
19.08.2017
07:06:26
машинки медленные

Denis
19.08.2017
07:09:52
pipe vs conduits vs streamings vs machines vs iteratee?

Abbath
19.08.2017
07:10:25
@qnikst а кто быстрый?

Denis
19.08.2017
07:12:52
Кметт сам сказал https://stackoverflow.com/a/17282019/3042847 ...

Alexander
19.08.2017
07:20:45
пайпы кондуиты стриминг

Denis
19.08.2017
07:42:03
зато в машинках много разнообразия)
что делают авторы пурскриптовых пакетов? просто портируют хаскельные (особо не напрягаясь) и как там так и тут нет ни одного примера! https://github.com/purescript-contrib/purescript-machines

Дмитрий
19.08.2017
08:09:27
Их пакеты ограничиваются подробной документацией по методам
Причём чтобы их увидеть нужно самому догадаться зайти в pursuit и щёлкнуть на саб-модули. Не самый интуитивный вариант)
Ну и примеров обычно да, нема

Denis
19.08.2017
08:12:14
а какой прок от инструмента если нет примеров его использования? я потратил много времени на recursion-schemes (были бы примеры, было бы проще (только тривиалы с cata,ana,para) а сложнее уже ничего нет)

Pavel
19.08.2017
08:12:55

Дмитрий
19.08.2017
08:13:37
Причём в простых случаях даже так и есть
Но вообще не круто конечно

Denis
19.08.2017
08:15:48
ну в простых да, но когда автор делает либу он же не хотел одни хелловорлды делать

Дмитрий
19.08.2017
08:16:50
Я по себе знаю, что часто сделать какой-то крутой концепт гораздо проще чем подробно и понятно описать его в доке(