Alexander
(сорри я немного не серьёзен, устал, а завтра опять вставать рано и на капельницы ехать)
Alexander
но вообще пример выше валидный
Alexander
ещё валидный - embedded / или какой realtime
Ilya
ну большинство research кода как раз таково, да (я не промышленный программист, подвизаюсь в "академии")
Ilya
надо написать high-performance лапши
Ilya
поэкспериментировать и выкинуть
Ilya
для такого — haskell, видимо, действительно не хорош, но мой пример со случайными с числами — не из этой области
Alexander
если сильно high-performance, ещё нужно кучу SIMD и прочей веселухи, не факт, что haskell - best fit
Alexander
(кодогенерация не в счет)
Alexander
и?
Alexander
кстати, а вы знали что Tsuru Capitals оказывается живы и здоровы?
Alexander
извините за offtop, просто вспомнилось и темы близкие
Alexander
hmatrix, всякие байндинги к лапакам есть
Alexander
но их качество странное
Alexander
когда на haskell пишешь хочется высокоуровневости при этом, а хорошее решение вроде не нашли
Влод
Ну ссылки во все стороны
Alexander
https://github.com/fpco/inline-c-nag вот типа такого, например
Alexander
(тут я не эксперт) но _простой_ data analysis, на питонах с пандасами или R plyr и т.п. писать кажется проще
Alexander
простой в смысле прошёлся и выкинул
Ilya
Alexander
в интерактивном режиме
Alexander
а чем многомерный массив отличается от одномерного, кроме наличия функции индексации?
Ilya
я как-то смотрел, как high-performance hash tables реализованы (https://hackage.haskell.org/package/hashtables) — и там все было очень низкоуровнево и неприятно
Влод
и?
Ну двусвязные списки неприятно делать. Ещё неприятнее когда структура 2мерная
Misha
господа, такой вопрос: я хочу в некотором кэше держать exception в течении какого-то короткого времени, чтобы не бомбить IO, если там ошибка какая-то временная. не будет ли у меня каких-то проблем связанных с хранением именно exception? Типа там какой-нибудь большой и толстый stack trace, загадочные утечки памяти и т.п.
Alexander
нет обычный тип
Alexander
в общем что обычно случается, то и тут
Misha
круто
Konstantin
@qnikst
Alexander
правильно?
Anatolii
👍
Anatolii
Как наш уютный хаскеля чатик наполонили he?
Anatolii
*hr
✙glicOne✙
Да тут и помимо hr, много разных людей. Я вот с чатика clojure сюда перекочевал
Ilya
а можно ссылку на чатик про clojure,
Ilya
?
✙glicOne✙
https://t.me/clojure_ru
Vasiliy
подскажите, есть какой-то более-менее формальный метод отображения типов-сумм в реляционные таблицы?
Vasiliy
гуглится с трудом, всякие sum и union выдают маны по соответствующим функциям из sql
Vasiliy
нашёл пару рецептов с использованием триггеров, но это выглядит как костыли
Vasiliy
вот в project-m36, который, вроде как, представляет из себя настоящую реализацию реляционной модели, есть поддержка ADT https://github.com/agentm/project-m36/blob/master/docs/new_datatypes.markdown#implementation-for-haskell-types
Vasiliy
но тут вопрос - они это через внутренние костыли делают или используют какие-то реляционные фокусы?
Dmitrii
Не знаю насчёт формального метода, но в project-m36 используют не особо что-то умное на первый взгляд. В ячейках хранятся объекты типа Atom. Поиск по сорцам показывает, что произвольные ADT хранятся этим конструктором типа Atom:
data Atom = ... | ConstructedAtom DataConstructorName AtomType [Atom]
То есть по сути просто название конструктора и список полей. Как видно, не очень типобезопасно, ибо без зависимых типов грустно в этом случае (они могли бы помочь). Но у них есть инстансы для Generic, они используют женериковое представление структуры ADT, чтобы конвертировать в такой тип. Если их реализация протестирована норм, то проблем не должно быть.
Vasiliy
спасибо, я в сырцы не смотрел
Vasiliy
костылик, значит... я бы с радостью заюзал project-m36, но его даже на хакадже нет, так что вряд ли оно готово для продакшона
Vasiliy
так что пока у меня постгрес :)
Alexander
o/
Зигохистоморфный
\o
Зигохистоморфный
зига слева зига справа
Anatolii
Это sopvop?
Зигохистоморфный
похоже)
Anatolii
✌️
Aragaer
o/ это стандартное приветствие в еве
Alexander
у меня ева ассоциируется только с евангелионом
Aragaer
не, другая ева 8)
Alexander
я наверное догадался какая
Alexander
как правильно ссорудить API для базы данных, если это может быть RDBS или Key-Value в зависимости от настроек?
Alexander
у кого-нить есть best practices?
Anatolii
мне кажется у тебя API к RDBMS будет как к KV
Alexander
вот наверное
Alexander
но с другой стороны у меня в KV есть функции типа :: .. -> (A -> A) -> ..
Alexander
причем этот A иерархический, который может в частных случаях маппиться на пару таблиц
Alexander
а переизобретать ORM не хочется
Alexander
возможно можно разбить на методы, это в принципе норм
Leonid 🦇
Sup хасканы
Arseniy
Yo
Bohdan
Alexey
Misha
а кто знает Test.QuickCheck.Monadic есть в tasty?
blkmrkt
У меня задача допилить воркера который исполняет задачи из amqp: задачи принимаются через одну очередь, ack/nack в зависимости от успеха выполнения задачи, и результаты складываются в отдельный очереди в зависимости от типов данных.
Все не могу разобраться с amqp либой и что тут thread-safe а что нет. Вот пример из доков: https://github.com/rabbitmq/rabbitmq-tutorials/blob/master/haskell/worker.hs Можно ли делать ackEnv metadata внутри другого треда? Я envelope передаю через TBQueue, но при больших объемах месседжей в tcp пишется ересь и сервер rabbitmq закрывает коннект.
blkmrkt
вот код который все спавнит. Уже сделал чтоб каждый воркер открывал новый коннект к rabbitmq
Konstantin
@blkmrkt не знаю особенностей в хаскелле, но обычно внутри одного коннекшена создают несколько каналов. Вот как раз каждый канал должны быть per thread и их нельзя шарить
blkmrkt
Alexander
ack-ать из того же треда надо насколько я помню
Dmitry
Нам ( hxr.team ) нужно еще людей на Haskell, Web, PostgreSQL. Удалёнка, лучше фуллтайм. dmz@hxr.team
Max
Опять hr-ы пролезли ;)
Dmitry
wait oh shi...
Dmitry
что-то ураганный спрос на х-л в этом сезоне