Alexander
и потом writev в сокет
Alexander
что кстати не круто если оно не упаковывает мелкие куски в одну строку
Alexander
мы вроде как-то это обходили
Misha
ага, ясно
Влод
есть следующее правило типизации: для любого типа T тип Bottom является подтипом T (Bottom :< T)
ну да, найс. Правда немного неясен профит приписывать тип боттом для невычислимых функций. у таких функций с типом ведь всё в порядке.
Misha
ну у нас есть data Message = Message StablePrint ByteString
может StablePtr? про StablePrint ни разу не слышал
Alexander
это наш тип
Misha
а, ок
Нурлан
кажется они вернулись
Ilya
Может Джон просто поздоровался? Привет, Джон
Alexander
поздно
Ilya
Пока
Alexander
пеппа конечно хорошо, но не настолько
Misha
а вот еще вопрос: какую лучше всего структуру использовать под небольшое множество строк, в которое надо изредка что-то добавлять и удалять и гораздо чаще делать запросы типа "дай мне случайный элемент" или "дай мне элемент по принципу round-robin"
Misha
я чо-то много вопросов задаю
Misha
с другой стороны, кому-то будет полезно
Misha
понятно, что можно список и рандомный индекс
Misha
но вдруг есть что-то красивое
Quet
vector?
Нурлан
Ну видимо такую в которой время обращения к элементу будет O(1) из таких структур я только Vector знаю
Quet
у вектора O(1)
Нурлан
я опечатался
Quet
ок )
Нурлан
извините )
Misha
можно вектор
Misha
люди вот так извращаются http://stackoverflow.com/questions/7349080/select-random-element-from-a-set-faster-than-linear-time-haskell
Quet
эм.. а в Set линейное время?
Quet
херовый такой Set
Нурлан
я думалв Set нет порядка
Misha
не, это типа выбрать случайный элемент быстрее чем линейно
Нурлан
но я не работал в ним ))
Misha
такой примерно select * form t order by rand() limit 1;
Quet
это скорее выбрать из списка
Quet
с фулл сканом
Misha
вот если есть конструкция похожая на order by rand было бы круто
Misha
а неважно, limit 1 же
Misha
в хаскеле на первом же и остановится
Quet
угу, но линейное время ты получишь
Misha
это, в общем-то, не страшно, скорость тут ни на что не повлияет, мне просто неохота дурацкий код писать
Нурлан
а что за принцып round-robin?
Misha
каждый выбираем по одному разу по очереди
Нурлан
Если эта структура имеет фиксированную длину, то лучше вообще использовать кортеж
Нурлан
фиксированную длину < 10
Нурлан
вроде говорилось, что структура маленькая
Quet
пусть берет вектор спокойно
Нурлан
не учи плохому человека
а почему кортеж плохо?
Quet
завтра понадобится 20 элементов
Quet
или 100
Нурлан
так я же говорю, если структура фиксированная
Quet
а главное
Quet
зачем кортеж?
Quet
ну если не устраивать тот самый онанизм на типах?
Нурлан
у него время обращения норм
Нурлан
при частых запросах вкатит
Нурлан
а если запросы не частые в малых структурах можно и обычные списки использовать
Quet
как ты из тупла возьмешь n-й элемент? (n - рандом)
Quet
а если запросы не частые в малых структурах можно и обычные списки использовать
опять же ЗАЧЕМ? если есть вектор с нужными характеристиками по случайному доступу
Нурлан
до 10 элемента есть встроенная функция (библиотеку не помню)
Quet
какая сигнатура у этой функции?
Нурлан
в смысле случайный доступ, индекс обращения все равно будет самостоятельно через random считаться
Нурлан
а что такое случайный доступ?
Quet
https://en.wikipedia.org/wiki/Random_access
Misha
vector[random(0, vector.size)]
Quet
как можно советовать что-то про структуры блин )
Misha
"случайный" в этом смысле
Misha
типа дай мне какой-нибудь элемент, который вероятнее всего не повторялся в предыдущий раз
Нурлан
vector[random(0, vector.size)]
кстати в haskell можно задать рандомный выбор из множества, но я не знаю какая там скорость обращения
Нурлан
вру, из списка
Quet
линейная. если из списка
Misha
list !! index кидает исключения
Misha
это как-то уж совсем
Нурлан
а index < length list ?
Misha
да, конечно, его можно таким сгенерировать
Misha
то есть оно конечно просто
Misha
но уродливо
Нурлан
про tuples, да плохой совет был, думаю