Size: a a a

2020 May 10

AV

Alexander Vershilov in Haskell
что тут правильно ставить и главное, как наработать интуицию?
источник

KV

Kirill Valyavin in Haskell
Вроде же не бывает в хаскелле реально постфиксных операторов, есть только секция, где оператор оказывается справа
источник

KV

Kirill Valyavin in Haskell
Т. е. можно добавить фиктивный аргумент типа ()
источник

KV

Kirill Valyavin in Haskell
А, не, не получится
источник

KV

Kirill Valyavin in Haskell
Получится только если применять ко всему тому, что слева. Это не то, но вдруг получится сделать так, чтобы можно было
источник

KV

Kirill Valyavin in Haskell
И секции без скобочек не написать...
источник

KV

Kirill Valyavin in Haskell
А, есть же расширение PostfixOperators!
источник

KV

Kirill Valyavin in Haskell
Которое всё равно не работает без скобок, но хоть позволяет избавиться от лишнего аргумента
источник

AV

Alexander Vershilov in Haskell
@Ordinary_man я ещё круче сделал:
simpleStatement которое автоматом выводит encoder, но только в том случае, если каждый из типов передаваемых в параметре разворачивается в 1 параметр
источник

AV

Alexander Vershilov in Haskell
И их типы не меняются
источник

AV

Alexander Vershilov in Haskell
Правда в opensource либу пока не положил
источник

YS

Yan Shkurinskiy in Haskell
Пробую понять хД
источник

AV

Alexander Vershilov in Haskell
simpleStatement
 :: forall (p::[*]) a b . (AsParams p a, UnnestSimple a ~ p)
 => BS.ByteString -> HD.Result b -> Bool -> HS.Statement a b
источник

YS

Yan Shkurinskiy in Haskell
orderFilesCreate ::
 MonadDatabase m =>
 (Id StaticFile, Id Order) ->
 m ()
orderFilesCreate =
 getDefaultSession sql withoutResult
 where
   sql =
     [r|
insert into api.order_files (file_id, order_id)
values ($1, $2);
|]

У меня типа такого сейчас
источник

AV

Alexander Vershilov in Haskell
UnnestSimple закрытое семейство, которое разворачивает туплю в список на типах
источник

AV

Alexander Vershilov in Haskell
type family UnnestSimple a where
 UnnestSimple (a,b) = '[a,b]
 UnnestSimple (a,b,c) = '[a,b,c]
 UnnestSimple (a,b,c,d) = '[a,b,c,d]
 UnnestSimple (a,b,c,d,e) = '[a,b,c,d,e]
 UnnestSimple a = '[a]
источник

AV

Alexander Vershilov in Haskell
src/Cheops/Model/Contest.hs:750:10: error:
   • No instance for (HE.AsValue Contest)
       arising from a use of ‘HS.simpleStatement’
   • In the expression: HS.simpleStatement sql decoder True

неожиданная ошибка если не сходится
источник

AV

Alexander Vershilov in Haskell
Следующий шаг что-то сделать с hasql-th
источник

AV

Alexander Vershilov in Haskell
чтобы он не умничал, а тупо делал из Tagged (input,output) ByteString
источник

AV

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