Size: a a a

2020 May 26

YS

Yan Shkurinskiy in Haskell
Из логики
источник

AV

Alexander Vershilov in Haskell
У тебя будет Read m Foo [Bar], Read m Bar Baz
источник

JS

Jerzy Syrowiecki in Haskell
Alexander Vershilov
Тут видна семантика, read/find/fetch/lookup и т.п.
какая детализация семантики нужна в сигнатуре?
источник

AV

Alexander Vershilov in Haskell
Yan Shkurinskiy
Ну типа этого

class Read m i o where
 read :: i -> m o

class Write m i o where
 write :: i -> m o
Давай разберёмся по очереди,  у тебя так? ^
источник

AV

Alexander Vershilov in Haskell
Какие методы предоставляет MonadDb?
источник

YS

Yan Shkurinskiy in Haskell
Alexander Vershilov
Давай разберёмся по очереди,  у тебя так? ^
Сейчас)
1. Да, почти так. Классы CanFind/Update/Create практически такой сигнатуры, и он находятся в компоненте бизнес-логики
2. Монада базы данных находится в компоненте базы данных ( в модуле, отвечающий за реализацию через hasql)

type Coding e d = (Encodable e, Decodable d)

class (Monad m, DatabaseLogger m) => MonadDatabase (m :: * -> *) where
 createSession :: Coding e d => SQLQuery -> (D.Row d -> D.Result r) -> e -> m r
 runQuery :: SQLQuery -> m ()
источник

AV

Alexander Vershilov in Haskell
Yan Shkurinskiy
Сейчас)
1. Да, почти так. Классы CanFind/Update/Create практически такой сигнатуры, и он находятся в компоненте бизнес-логики
2. Монада базы данных находится в компоненте базы данных ( в модуле, отвечающий за реализацию через hasql)

type Coding e d = (Encodable e, Decodable d)

class (Monad m, DatabaseLogger m) => MonadDatabase (m :: * -> *) where
 createSession :: Coding e d => SQLQuery -> (D.Row d -> D.Result r) -> e -> m r
 runQuery :: SQLQuery -> m ()
Твой дизайн я понимаю, вопрос к Юре
источник

AV

Alexander Vershilov in Haskell
Вроде обсуждается логичность гранулярности и того, что её можно заменить на Read/Write
источник

YS

Yan Shkurinskiy in Haskell
Для меня скорее это вопрос того, что read/write я не хотел бы видеть в бизнес-логике (лично мне оно не нравится), но технических проблем не вижу
источник

AV

Alexander Vershilov in Haskell
Ну, я не вижу разницы вообще, столько же констрейнтов, только ещё голову над семантикой ломать
источник

YS

Yan Shkurinskiy in Haskell
ну вот мне видится, что можно иметь read/write, а можно иметь find/update/create/delete
источник

YS

Yan Shkurinskiy in Haskell
второе более "высокоуровнево", и подходит для логики, кмк
источник

YS

Yan Shkurinskiy in Haskell
ну и более гранулярно
источник

YS

Yan Shkurinskiy in Haskell
да, констрейнтов больше, но не то что бы сильно
источник

YS

Yan Shkurinskiy in Haskell
не уж то все согласились со мной?( (или, в отличии от меня, заняты делом просто х.х )
источник

AV

Alexander Vershilov in Haskell
Yan Shkurinskiy
да, констрейнтов больше, но не то что бы сильно
Откуда их больше то?
источник

AV

Alexander Vershilov in Haskell
На 1 тип метода 1 констреинт и там и там
источник

YS

Yan Shkurinskiy in Haskell
Alexander Vershilov
Откуда их больше то?
Ну, если мне надо дать, например, возможность для полной записи, то я должен сказать, что надо уметь и создавать, и обновлять (и может даже удалять)
источник

AV

Alexander Vershilov in Haskell
В предложенном выше варианте, возможно у Юры другой класс и там меньше, но я пока не понимаю
источник

YS

Yan Shkurinskiy in Haskell
У Юры это просто write
источник