Cheese
попробую написать сегодня
Alexander
а как это работает?
Alexander
а туплю
Alexander
@cblp_su а можешь сигнатуру того ,что ты хочешь написать написать?
Alexander
ну или F хотя бы что такое
Cheese
Alexander
потому, что я попытался мин пример сделать и или решение тривиальное
Alexander
но тогда и F и B тривиальные и там и без SingI сработает
Alexander
но у тебя наверное дургой случай
Alexander
например, если B ~ Nat то не сработает
Alexander
ну или что-то плохо перечислимое
Cheese
F в данном конкретном случае — data family, где каждый инстанс — простая data из чисел, списков и прочих простых штук
Cheese
B у меня — конечное перечисление, точнее сумма двух конечных перечислений
Cheese
что ты называешь тривиальным решением?
Cheese
в принципе, я могу взять Union F UniverseB, по нему матчить тоже не очень сахар, но я хотя бы знаю, как
Alexander
проще минимальный пример, а то у меня явное ощущение, что я не то решаю
Cheese
нет, сегодня не получится, завтра набросаю пример
Vladislav
@cblp_su Я чего-то может не так понял, но по фрагменту кода выше чтобы извлечь F b из A надо просто запатеррнматчить
Vladislav
Потому что внутри A как раз и лежит F b
Alexander
да
Alexander
вопрос там видимо в том, как с ним сделать что-нить разумное
Alexander
т.е. там в зависимости от b будут разные данные
Vladislav
Так для этого там SingI b, по которому можно матчить
Alexander
ну вот да, по нему матчить и в каждой ветке раскрывать f правильно
Alexander
(примерно то, что я называл тривиальным решением)
Vladislav
А вообще здесь A это зависимая пара (b :: B, F b) по сути
Vladislav
Поэтому и операций можно ожидать соответствующих. Извлечь первый компонент, извлечь второй компонент. Матчить по первому, чтобы получить type refinement по второму.
Vladislav
Σ B F
Cheese
для этого обязательно положить B явным полем?
data A = forall (b :: B) . A (Sing b) (F b)
что-то такое?
Vladislav
Sing или SingI — все одно и то же
Alexander
нет
Vladislav
из SingI можно получить явный Sing через метод sing
Vladislav
а наоборот через withSingI
Vladislav
со ScopedTypeVariables легко забиндить типа так:
foo (A (fb :: F b)) = case sing :: Sing b of ...
Alexander
я бы написал kk :: F B -> Sing B ; kk _ = sing но наверняка можно со scopedtypevariables
Alexander
@int_index чепятает быстрее
Alexander
да и поточнее
Cheese
и там внутри многоточия будет b ~ B42?
Anonymous
Приветствую.
А есть ли возможность отключить возможность ввода опций рантайма при запуске?
Anonymous
Гугл сходу не знает :-(
Dmitry
-rtsopts={none,some,all}
?
Alexander
@cblp_su { SB42 -> ... ; SB41 -> ...}
Alexander
свой hs_main если только сделать
Dmitry
@qnikst
-rtsopts=none
не будет работать?
Alexander
https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ffi-chap.html#using-your-own-main
Alexander
не знаю, давай попробуем
Alexander
мне казалось оно все равно будет на -RTS ... смотреть
Alexander
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
аналогично
Alexander
т.е. отлючены, но парсер смотит
Dmitry
а это не то, что хочет топикстартер достичь?
Alexander
нельзя даже —help сделать
Alexander
не знаю
Alexander
Rinat ^^
Anonymous
Хмм
Anonymous
Сек :-)
Anonymous
Работает, спасибо!
Anonymous
Я пробовал вообще убрать rtsopts
Anonymous
Но не сработало, а rtsopts=none делает именно то, что нужно :-)
Зигохистоморфный
а вообще это кто-то юзает? https://hackage.haskell.org/package/machines-0.6.3
я помню в универе были автоматы Мили, Мура
Зигохистоморфный
https://github.com/Copilot-Language/Copilot
Anonymous
Вот последнее интересно! Потыкаю, спасибо)
Alexander
машинки медленные
Зигохистоморфный
pipe vs conduits vs streamings vs machines vs iteratee?
a66ath
@qnikst а кто быстрый?
Зигохистоморфный
Кметт сам сказал https://stackoverflow.com/a/17282019/3042847 ...
Alexander
пайпы кондуиты стриминг
Зигохистоморфный
зато в машинках много разнообразия)
Зигохистоморфный
что делают авторы пурскриптовых пакетов? просто портируют хаскельные (особо не напрягаясь) и как там так и тут нет ни одного примера! https://github.com/purescript-contrib/purescript-machines
Дима
Дима
Их пакеты ограничиваются подробной документацией по методам
Дима
Причём чтобы их увидеть нужно самому догадаться зайти в pursuit и щёлкнуть на саб-модули. Не самый интуитивный вариант)
Ну и примеров обычно да, нема
Зигохистоморфный
а какой прок от инструмента если нет примеров его использования? я потратил много времени на recursion-schemes (были бы примеры, было бы проще (только тривиалы с cata,ana,para) а сложнее уже ничего нет)
ᛏᚺᛖ ᛚᛖᛋᛒᛁᚨᚾ ᛗᚨᚾ ᚷᛁᚱᛚ 🐝
Дима
Дима
Причём в простых случаях даже так и есть
Но вообще не круто конечно
Зигохистоморфный
ну в простых да, но когда автор делает либу он же не хотел одни хелловорлды делать
Дима
Я по себе знаю, что часто сделать какой-то крутой концепт гораздо проще чем подробно и понятно описать его в доке(
Дима
В таком случае хорошо когда тесты есть — можно посмотреть, какие кейсы для либы подразумевал автор
Anonymous
...
| doesEnrageMork a && doesEnrageGork = ?????
... подскажите как здесь ничего не вернуть, но вызвать две функции?