Вопрос по стилистике:
Вот есть у меня база в ней хранится инфа о некоем серевере (его имя и т.п.), по его ID (Persistent) из memcached-а я могу вынуть статус активности сервера, а так же по его ID я могу среднерить его URL (функция рендеринга вынимается из монады хендлера).
Мне надо вернуть JSON объект состоящий из ID, инфы из базы, url и статуса активности.
Собственно я из базы получил список, по нему сделал список Bool и Texl(урлы) , а потом zip-нул в tuple и используя паттерн матчинг сериализовал список таких туплов в JSON.
Вопрос вот в чём — плохая ли это практика и надо ли было запилить тип данных для сериализации и грязную функцию конвертер, которая лезет в memcached и т.п. ?

бля, биндинги нормально работают только если каждый раз открывать сокет, общаться, закрывать.
Придётся запиливать что-то самому, ибо это крайне плохо соотносится с архиектурой yesod-а.

Снойман в октябре мегахаки в йесоде наколбасил, в итоге он ломает возможность в генте иметь пакеты из ghc новее чем идут с компилятором (e.g. Cabal, binary), cabal-dev справляется (с даунгрейдом конфликтов), но как-то логичней чтоб пакетный менеджер разруливал ситуацию

Чо то пугали меня сложностью yesod-а. Однако, happstack многословнее и точно не проще. Собственно адекватное по функционалу веб приложение у меня получилось меньше и понятнее.
Тема аутентификации в yesod продумана немного лучше, а в happstack всё завязано на acid-state, который походу просто так не заменить. Кроме того, волевым решением начальства acid-state был признан стрёмным для продакшена.
Пока сильно кумарит TH магия для генерации html/CSS/js . Однако, никто ж не заставляет их использовать, а мне они так и вообще не нужны.
Короче, yesod рулит.

забавно, аутентификация с профилями прикольнее сделана в happstack, но напрочь отсутствует авторизация. У yesod проще и удобнее сделана аутентификация и авторизация. Т.е в первом случае придётся руками писать авторизацию, во втором самому с развитыми профилями мучаться. Развитые профиля нужны вобщем реже, но мне походу нужны.

Жуик. Из материалов по happstack я понял что у него есть некие проблемы со стримингом данных, из-за LazyIO . Инфа из этой старой статьи kuliniewicz.org (там ещё 4 части есть) . Может кто в курсе — не решили эту проблему?
Насколько я понимаю, у yesod-а благодаря condiut-ам этой проблемы нету?
PS Стримиться возможно будет видео, но это будет попозже.

По ходу что-то hdaemonize и yesod не могут поделить. Вот простейший вариант — gist.github.com При запуске демон остаётся под рутом, и pid-файл не записывает, если его убить и запустить заново, то вебсервер подымается вполне корректно. Причём даже после ребута системы. То же самое на warp (поверх которого yesod является обёрткой) работает без проблем. Интересно, чтож там такое за мутабельные переменные уровня OS намутил Снойман.

Снойман и сотоварищи (по йесоду) предлагают (точней реализуют) пихать в конфиг сразу настройки 4 окружений — dev, test, stage и prod. С учётом того, что настройким могут переопределяться (разные базы, порты и т.п.). По-моему это понятно с т.зр. разработчика, но не очень логично с т.зр. админа. Причём самое нелогичное, что по умолчанию сервер пускается в режиме dev и чтоб запустить в рабочем режиме надо задать это через "-e production" (в ком. строке ес-но). Буду рад любым комментариям по поводу

не, чот я в упор не понимаю — йесодские бенчмарки показывают 40k rps для warp и 600 rps для yesod, хотя разница там лишь в нескольких промежуточных вызовах (а весь "смысловой" код — отдача стат. строчки из памяти)

Написал модуль, который позволяет более-менее просто выполнять средствами persistent сложные sql-запросы. На hackage пока не выложил, так что вот исходник:
paste.in.ua
Пример использования: paste.in.ua

Для тех кто не в теме — persistent это такая «ORM» на haskell, используемая в yesod. Её проблема на сегодняшний день в том, что она вообще не умеет делать сложные sql-запросы иначе как «ручками» (с выписыванием запросов в виде строк, аля php). Данный модуль пытается решить эту проблему.