- 1
- 2
- 3
- 4
- 5
- 6
import qualified Data.ByteString.Lazy.Char8 as BS
readLineOfInts :: BS.ByteString -> [Int]
readLineOfInts str = case BS.readInt str of
Nothing -> []
Just (i, rest) -> i : if BS.null rest then [] else readLineOfInts (BS.tail rest)
CHayT 15.05.2016 12:02 # 0
ну и map read . words -- это как раз-таки небезопасное говно
Yuuri 16.05.2016 13:10 # 0
CHayT 16.05.2016 13:26 # 0
roman-kashitsyn 16.05.2016 14:24 # 0
То ли дело PHP std::cin.
roman-kashitsyn 16.05.2016 15:25 # +3
CHayT 16.05.2016 17:48 # 0
я бы захуячил парсер интов на продолжениях, к примеру, чтобы можно было разбивать инпут на чанки и потом скормить всё Олегу
roman-kashitsyn 16.05.2016 17:49 # 0
CHayT 16.05.2016 18:10 # +1
ф-ция, преобразующая поток байтов (разбитый на чанки в виде байтстрингов) в поток произвольной хуиты, определяемый парсером p
в данном случае в качестве Олега выступает Габриэль
composable, leak-free, const mem*
*при условии, что размер типа b фиксирован
CHayT 16.05.2016 18:22 # 0
inkanus-gray 16.05.2016 19:25 # +2
Кто все эти люди?
defecate-plusplus 16.05.2016 19:45 # +2
CHayT 16.05.2016 20:27 # 0
а Габриэль написал pipes
3.14159265 16.05.2016 20:31 # 0
олег за всё берётся смело
всё превращается в говно
а если за говно берётся
то просто тратит меньше сил
bormand 16.05.2016 21:45 # +2
Отмстить неразумным хозарам,
Их байты и стринги за буйный набег
Обрек он мечам и пожарам;
roman-kashitsyn 16.05.2016 23:36 # +1
Широко известные в узких кругах личности.
Олег Киселёв - учёный, исследователь, уже лет 20 выносит всем мозг ФП, вот сайт со статьями http://okmij.org/ftp/
Габриель - Gabriel Gonzalez - ведёт http://www.haskellforall.com/, один из самых вменяемых блогов по Хаски, работает в птиччере.
CHayT 17.05.2016 01:00 # 0
скандалы, интриги: оказывается он ещё и SJW
roman-kashitsyn 17.05.2016 09:40 # +4
У Олега есть статья, описывающая подход к обработке потоков данных http://okmij.org/ftp/Streams.html
Вкратце - это что-то вроде функциональных Boost.IOStreams - источники, приёмники, фильтры. Цель - сделать так, чтобы ленивое IO не текло ресурсами как сито.
Желание людей иметь такую штуку настолько велико, что есть несколько независимых реализаций, различающихся во многих деталях.
В частности, у Габриэля есть библиотека pipes, которая стремиться к теоретической красоте, у Michael (автор фрэймворка Yesod) - conduits, цель которого - чтобы всё работало.
По сути же это всё обычные корутины, которые можно склеивать друг с другом с проверкой типов.
Т.е. скармливать Олегу - проталкивать по каналам от источника в приёмники, "в качестве Олега выступает Габриэль" - реализация использует pipes соответствующего автора.
wvxvw 17.05.2016 15:31 # +1
roman-kashitsyn 16.05.2016 23:54 # 0
** Предложение не является публичной афертой
> скормить всё Олегу
А, ты про iteratees, так бы и сказал
Ну и для контеста многовато писанины.
CHayT 17.05.2016 00:09 # 0
не совсем, я в принципе про любую библиотеку из этого семейства