@haskellru

Страница 217 из 1551
Vladimir
28.02.2017
09:11:34
:D

Dmitry
28.02.2017
09:12:50
1) призвать ктулху -> ??? ктулху

Anatolii
28.02.2017
09:13:18
изгонять?

Dmitry
28.02.2017
09:13:29
изгонять это когда способ удаления объектов появится

Google
Dmitry
28.02.2017
09:13:34
пока они никуда не деваются

еще есть cage

immure как-то слишком клаустрофобно. пусть будет confine

Misha
28.02.2017
09:20:49
fasten

Dmitry
28.02.2017
09:21:50
нелогично. если пристегиваешься - тебя не надо потом саммонить

Misha
28.02.2017
09:22:14
ну прямой антоним наверное expel

призвал - изгнал

но это удаление все-таки

Dmitry
28.02.2017
09:22:46
да

Alexander
28.02.2017
09:41:51
С generic можно

Но у меня в голове не сложилось правильное (ТМ) решение

? animufag ?
28.02.2017
10:09:53
repl.it - Introducing Haskell https://repl.it/site/blog/haskell

Не знаю чем лучше аналогов

Google
Max
28.02.2017
10:10:20
@elemir90 ты чего с дивана ушёл?

? animufag ?
28.02.2017
10:10:26
Просто репостнул

Евгений
28.02.2017
10:10:37
Там тухло

Max
28.02.2017
10:10:47
потому что ты ушёл

у нас там про тр-кого

Евгений
28.02.2017
10:11:34
К тому же у меня много работы, не до срачиков

Dmitry
28.02.2017
11:08:05
@qnikst получается как-то слишком просто и тупо: https://gist.github.com/voidlizard/6425d53600bef89b7f59f2024e45c9c6

наверное, что-то тут не так.

Misha
28.02.2017
11:15:59
а чего тут может быть не так? ну разве что этот код не кладет чего-то там в кэш после вытаскивания из внешнего хранилища, ну так это отдельная большая песня

Dmitry
28.02.2017
11:16:29
какой-то он недостаточно абстрактный

Alexander
28.02.2017
11:17:02
сейчас подумаю, только приехал

Dmitry
28.02.2017
11:18:01
ну т.е понятно что тут не абстрагируется никак тип сторейджа, но с другой стороны непонятно как его абстрагировать и надо ли. специфика с двумя разными типами ключей - она тут уникальна

Alexander
28.02.2017
11:18:08
зачем summon в классе?

Dmitry
28.02.2017
11:18:53
ну потенциально может захотеться по другому объект доставать

или сделать какие-то вещи - например рекурсивно загрузить весь стаф, который там внутри

Alexander
28.02.2017
11:19:03
ок

Dmitry
28.02.2017
11:19:12
где-то это надо, где-то не надо

Alexander
28.02.2017
11:19:20
тогда логично

тип стоража я бы не стал абстрагировать, а то там треш и угар сразу будут

Dmitry
28.02.2017
11:19:51
да

Google
Dmitry
28.02.2017
11:20:15
MonadIO мне тут кстати нравится - на практике то будет внутри серванта зваться, меньше мусора в коде

а еще мне кажется ,что при помощи uniplate и type families можно при желании сделать удобный ORM где вся метаинформация будет в инстансах, а сами типы не будут ей загаживаться.

правда каждый атрибут придется завернуть в newtype но - для работы с uniplate это норма

и по моему это лучше, чем то, как это решается в persistent

Alexander
28.02.2017
12:00:40
persistent ужасен

мне понравился мой подход с функтором, надо будет поиграться с ним

Vladimir
28.02.2017
12:17:52
persistent ужасен
а что лучше?

Alexander
28.02.2017
12:17:59
ничего

ну в смысле ничего и raw access на мой взгляд лучше чем persistence

но я мало кода с обычными базами пишу

Vladimir
28.02.2017
12:18:27
то есть на более низком уровне работать и воротить свои абстракции?

Alexander
28.02.2017
12:18:33
да

в персистенте они протекают чуть-ли ни при чем-то более сложном чем select * from base where id=?

Vladimir
28.02.2017
12:34:02
да и ORM все протекают тоже

Alexander
28.02.2017
12:34:35
у меня ещё с питонопхп с ORM были проблемы

т.е. оно переставало работать

единственное, что было толковое это явовский doa dia dao, что-то такое, но это не ORM а edsl над sql, так что не в счет

Anatolii
28.02.2017
12:46:57
джависты своим хибернейтом козыряют

Alexander
28.02.2017
12:48:56
он какой-то упоротый

имхо

Google
Misha
28.02.2017
12:50:14
джависты своим хибернейтом козыряют
о нет, хибернейт это такой скрежет зубовный, что ну его в пень

never again

там не то, что протекает, там заборы-коровники-мама-мы-в-аду-мама. Потратить день на тривиальный фикс, который можно было бы сделать простым джоином --- нефиг делать.

Anatolii
28.02.2017
12:52:15
ну я такого же мнения, не очень понимаю зачем учтиь хибернейт если можно учить SQL

Vladimir
28.02.2017
12:53:02
вот да, всегда от таких инструментов ожидается просто гибкий и безопасный способ строить запросы, т.е. dsl, а тебе дают какую-то игрушку для примитивного CRUD.

и еще говорят тебе мол это же ПАТТЕРН, так надо. а если не получается что-то, то сам дурак

Alexander
28.02.2017
12:54:13
ну я ещё как-то понимаю идею, за ORM, но она ломается

обычно не охота брать целый объект, а как тащишь не целый, то начинаются пляски

ну и все join-ы начинают работать через зад

@anpryl я тебе proof of concept собирания результата mysql писал?

если да, то работает ли все ещё?

Anatolii
28.02.2017
12:55:58
@qnikst да, я его под свою либу подправил

но то был мой домашний проектик, так что на проде не работает:)

Dmitry
28.02.2017
12:56:18
С sql проблема не в нём, а в том куда бизнес логику девать

Если она в хаскелле, то БД не нужна

А если в БД то хаскелл не нужен

Alexey
28.02.2017
12:58:55
unsummon/exile

Misha
28.02.2017
13:00:19
А если в БД то хаскелл не нужен
можно и так, но тогда с шардингом тяжеловато

Dmitry
28.02.2017
13:01:25
Ну я пока склоняюсь что рсубд не нужна, хотя конечно от задачи зависит

Misha
28.02.2017
13:04:58
в этом месте средний программист наджави давится кофейком, конечно

Google
Misha
28.02.2017
13:05:53
но вообще да, понятно, что полно задач, где рсубд не нужна, но ее туда пихают потому что привыкли

Евгений
28.02.2017
13:06:37
define "не нужна". РСУБД это огромное количество оптимизаций для хранения данных, удовлетворяющих определённым условиям

Misha
28.02.2017
13:08:52
"не нужна" --- реляционная модель не очень подходит для представления данных

но на практике чаще бывает так, что оверхэд от ее использования превышает бенефиты (транзакции, гибкий язык запросов, вот это все)

потому что натянуть на реляционную модель можно почти что угодно, а вот получится ли в итоге удобно и быстро --- не факт

Dmitry
28.02.2017
13:26:00
Да как то удобно вообще ни разу не получалось

Misha
28.02.2017
13:53:50
ну такие задачи наверное

Aldar
28.02.2017
16:46:49
newtype Maybe' a = Maybe' { getMaybe :: Maybe a } deriving (Eq,Show) instance Monoid a => Monoid (Maybe' a) where mempty = Maybe' (Just mempty)

mempty справа же у меня верно определится как мемпти типа a?

или правильнее mempty = Maybe' (mempty)?

Misha
28.02.2017
16:52:26
наверное имелось в виду mempty = Maybe' . mempty ?

потому что иначе тайпчекер возмутится

? animufag ?
28.02.2017
16:54:08
mempty :: a

Aldar
28.02.2017
16:54:28
mempty = Maybe' (mempty :: a)?

? animufag ?
28.02.2017
16:54:51
mempty = Maybe' (Just mempty) ок ведь

Misha
28.02.2017
16:54:59
mempty = Maybe' (mempty :: Maybe a) тогда уж

Aldar
28.02.2017
16:55:35
но мемпти определен для типа а

а не для Maybe a

хотя если он определен для a, то и для Maybe a тоже определен

Misha
28.02.2017
16:56:42
а

ну да

Aldar
28.02.2017
17:01:36
instance Monoid a => Monoid (Maybe' a) where mempty = Maybe' (mempty) mappend (Maybe' (mempty)) m = m mappend m (Maybe' (mempty)) = m (Maybe' m1) mappend (Maybe' m2) = Maybe' (mappend m1 m2) Паттерн матчинг норм для маппенда с Maybe' (mempty)?

Страница 217 из 1551