Dmitry
еще есть cage
Dmitry
immure как-то слишком клаустрофобно. пусть будет confine
Misha
fasten
Dmitry
нелогично. если пристегиваешься - тебя не надо потом саммонить
Misha
ну прямой антоним наверное expel
Misha
призвал - изгнал
Misha
но это удаление все-таки
Dmitry
да
Alexander
С generic можно
Alexander
Но у меня в голове не сложилось правильное (ТМ) решение
Влод
repl.it - Introducing Haskell
https://repl.it/site/blog/haskell
Влод
Не знаю чем лучше аналогов
Max
@elemir90 ты чего с дивана ушёл?
Влод
Просто репостнул
Евгений
Там тухло
Max
потому что ты ушёл
Max
у нас там про тр-кого
Евгений
К тому же у меня много работы, не до срачиков
Dmitry
@qnikst получается как-то слишком просто и тупо: https://gist.github.com/voidlizard/6425d53600bef89b7f59f2024e45c9c6
Dmitry
наверное, что-то тут не так.
Misha
а чего тут может быть не так? ну разве что этот код не кладет чего-то там в кэш после вытаскивания из внешнего хранилища, ну так это отдельная большая песня
Dmitry
какой-то он недостаточно абстрактный
Alexander
сейчас подумаю, только приехал
Dmitry
ну т.е понятно что тут не абстрагируется никак тип сторейджа, но с другой стороны непонятно как его абстрагировать и надо ли. специфика с двумя разными типами ключей - она тут уникальна
Alexander
зачем summon в классе?
Dmitry
ну потенциально может захотеться по другому объект доставать
Dmitry
или сделать какие-то вещи - например рекурсивно загрузить весь стаф, который там внутри
Alexander
ок
Dmitry
где-то это надо, где-то не надо
Alexander
тогда логично
Alexander
тип стоража я бы не стал абстрагировать, а то там треш и угар сразу будут
Dmitry
да
Dmitry
MonadIO мне тут кстати нравится - на практике то будет внутри серванта зваться, меньше мусора в коде
Dmitry
а еще мне кажется ,что при помощи uniplate и type families можно при желании сделать удобный ORM где вся метаинформация будет в инстансах, а сами типы не будут ей загаживаться.
Dmitry
правда каждый атрибут придется завернуть в newtype но - для работы с uniplate это норма
Dmitry
и по моему это лучше, чем то, как это решается в persistent
Alexander
persistent ужасен
Alexander
мне понравился мой подход с функтором, надо будет поиграться с ним
Anonymous
Alexander
ничего
Alexander
ну в смысле ничего и raw access на мой взгляд лучше чем persistence
Alexander
но я мало кода с обычными базами пишу
Anonymous
то есть на более низком уровне работать и воротить свои абстракции?
Alexander
да
Alexander
в персистенте они протекают чуть-ли ни при чем-то более сложном чем select * from base where id=?
Anonymous
да и ORM все протекают тоже
Alexander
у меня ещё с питонопхп с ORM были проблемы
Alexander
т.е. оно переставало работать
Alexander
единственное, что было толковое это явовский doa dia dao, что-то такое, но это не ORM а edsl над sql, так что не в счет
Anatolii
джависты своим хибернейтом козыряют
Alexander
он какой-то упоротый
Alexander
имхо
Misha
never again
Misha
там не то, что протекает, там заборы-коровники-мама-мы-в-аду-мама. Потратить день на тривиальный фикс, который можно было бы сделать простым джоином --- нефиг делать.
Anatolii
ну я такого же мнения, не очень понимаю зачем учтиь хибернейт если можно учить SQL
Anonymous
вот да, всегда от таких инструментов ожидается просто гибкий и безопасный способ строить запросы, т.е. dsl, а тебе дают какую-то игрушку для примитивного CRUD.
Anonymous
и еще говорят тебе мол это же ПАТТЕРН, так надо. а если не получается что-то, то сам дурак
Alexander
ну я ещё как-то понимаю идею, за ORM, но она ломается
Alexander
обычно не охота брать целый объект, а как тащишь не целый, то начинаются пляски
Alexander
ну и все join-ы начинают работать через зад
Alexander
@anpryl я тебе proof of concept собирания результата mysql писал?
Alexander
если да, то работает ли все ещё?
Anatolii
@qnikst да, я его под свою либу подправил
Anatolii
но то был мой домашний проектик, так что на проде не работает:)
Dmitry
С sql проблема не в нём, а в том куда бизнес логику девать
Dmitry
Если она в хаскелле, то БД не нужна
Dmitry
А если в БД то хаскелл не нужен
Alexey
unsummon/exile
Dmitry
Ну я пока склоняюсь что рсубд не нужна, хотя конечно от задачи зависит
Misha
в этом месте средний программист наджави давится кофейком, конечно
Misha
но вообще да, понятно, что полно задач, где рсубд не нужна, но ее туда пихают потому что привыкли
Евгений
define "не нужна". РСУБД это огромное количество оптимизаций для хранения данных, удовлетворяющих определённым условиям
Misha
"не нужна" --- реляционная модель не очень подходит для представления данных
Misha
но на практике чаще бывает так, что оверхэд от ее использования превышает бенефиты (транзакции, гибкий язык запросов, вот это все)
Misha
потому что натянуть на реляционную модель можно почти что угодно, а вот получится ли в итоге удобно и быстро --- не факт
Dmitry
Да как то удобно вообще ни разу не получалось
Misha
ну такие задачи наверное
Алдар
newtype Maybe' a = Maybe' { getMaybe :: Maybe a }
deriving (Eq,Show)
instance Monoid a => Monoid (Maybe' a) where
mempty = Maybe' (Just mempty)