Alexander
это ж стандартный путь к обновлению формата
Anatolii
смотрю доклад https://www.youtube.com/watch?v=riJuXDIUMA0
Anatolii
ребята оч смелые
Anatolii
пишут на хаскель под фронт и под мобилы
Anatolii
обернули еще это все в cli
Anatolii
https://github.com/obsidiansystems/obelisk
Anatolii
жалко что доков там нет толком, ну говорит что они будут дописывать
Yura
Hi folks
Yura
Кто-то делал Non_Blocking splice ?
Yura
или что-то не механизмах select, чтобы FFI работал с System.Timeout.timeout ?
Kirill
@drcha0s может ты про interruptible?
Yura
наверное
Yura
я вот засунул с_splice в timeout а он не реагирует
Yura
хм...
Yura
может получится
Kirill
@qnikst с vmsplice игрался, ну и вообще про FFI точно должен что-нибудь повещать
Kirill
@drcha0s а c_splice как объявлен?
Alexander
я на си игрался
Anatolii
А нету какого-то caching layer над persitent ?
Alexander
interruptible надо, будет сигнал прилатать, или fd в haskell-ный event manager добавлять
Yura
ну вот у меня 2 проблемы - 1-я по throwTo нить не прибивается это решается interruptible
Yura
и 2-я что когда я делаю close на сокете то мой c_splice не вылетает, как recv например
Kirill
interruptible надо, будет сигнал прилатать, или fd в haskell-ный event manager добавлять
а хэндлер не надо вешать на SIGPIPE? или типа splice сам его словит в блоке?
Alexander
почти все сишные вызовы с eagain выходят
Alexander
если нет, то не повезло
Yura
foreign import ccall "splice" c_splice
Alexander
вот, что с закрытием не знаю
Alexander
я бы сишный пруф оф концепт сделал
Kirill
А нету какого-то caching layer над persitent ?
персистент же вроде простой "ORM", всё в сикель просто транслируется
Alexander
там и на сях все неочевидно
Yura
ну вот про event manager где посмотреть?
Kirill
почти все сишные вызовы с eagain выходят
man говорит, что с splice не повезло
Alexander
GHC.Event
Alexander
там registerFD
Alexander
это интерфейс к еполу
Alexander
ну или что в вашей ос
Kirill
на https://ogris.de/howtos/splice.html пишут "In this case, your program either receives a SIGPIPE or, if you have blocked SIGPIPE, splice() will return -1 with errno set to EPIPE. If you want to reuse the pipe, you have to empty it by splicing to /dev/null"
Yura
ну если splice в non blocking mode запусить, то EAGAIN будет
Alexander
вот1 я так и говорил
Yura
но тогда надо с EventManager парится
Yura
вот на питоне proof of concept
Yura
https://gist.github.com/NicolasT/4519146
Yura
от автора RaFT для Haskell :)
Yura
что интересно interruplible помог...
Yura
надо как recv попробовать unsafe
Alexander
unsafe не надо
Anonymous
здрасьте не подскажите, как реализовать в хаскиле функцию, которая берет лист, число n и возвращает лист листов по n элементов? group::[a]->Int->[[a]] group [1,4,8,8] 2=[[1,4],[8,8]]
Timofey
Пригодятся функции drop и take. Ну и рекурсия)
Yura
unsafe не надо
why? recv именно так сделан
Timofey
f xs n = take n xs : f (drop n xs) n
Timofey
Плюс условие выхода из рекурсии: f [] n =[]
Aleksei (astynax)
Эй, вы решение-то готовое не давайте! Дайте время подумать :)
Anonymous
да я забыл про них... спасибо
Cheese
товарищ же просил не подсказывать > не подскажите...
Oleg
Теперь придётся выдумывать ещё одно без рекурсии
Alexander
why? recv именно так сделан
если не блокирующий, то можно
Dmitry
а есть еще какой-то генератор форматированного текста, но не пандок?
Dmitry
пандок убогий и не очень настраивается
Alexander
тебе html to txt?
Dmitry
ADT -> AST -> [txt, rst,markdown, etc...]
Dmitry
ну, примерно как pandoc, только нормальный. что бы можно было настроить ширину страницы, например
Dmitry
а то у него по умолчанию даже меньше 80 символов и непонятно, можно ли настроить
Aleksei (astynax)
Пандок настраивается дописыванием форматтеров. Дизайн такой
Dmitry
а ты примеры где-нибудь видел?
Dmitry
ну и как-то тупо его дописывать, если всё, что тебе нужно - это ширину строки поменять
Alexander
mmark был
Aleksei (astynax)
mmark, это md->html и всё
Aleksei (astynax)
ну и как-то тупо его дописывать, если всё, что тебе нужно - это ширину строки поменять
Для этого есть возможность скриптования writer'ов на lua: https://pandoc.org/lua-filters.html Да, Lua, но и скрипт то должен получиться небольшой :)
Aleksei (astynax)
Причём фильтрами у pandoc могут выступать просто программы, работаючеме через pipe
Dmitry
ну представляешь через пайп теблицу переформатировать?
Aleksei (astynax)
Есть JSON-filters
Aleksei (astynax)
AST-in-JSON -> AST-in-JSON
Dmitry
вот это более интересно. ок, посмотрю. а это есть вообще в документации?
Dmitry
там она какая-то была куцая
Aleksei (astynax)
https://pandoc.org/filters.html#json-filters
Aleksei (astynax)
Для Pandoc JSON AST есть инстансы хаскельные
A64m
chunks n = unfoldr $ (\case ([], []) -> Nothing; r -> Just r) . splitAt n