Size: a a a

2021 January 20

DS

Doge Shibu in rust_offtopic
Следовательно их можно комбинировать через монадические комбинаторы
источник

EG

Emmanuel Goldstein in rust_offtopic
И как это на практике должно выглядеть?
main = scotty 3000 $ do
    _ <- get "/whatever" $ do
       # route code
    _ <- post "/whatever $ do
       # route code

?
источник

EG

Emmanuel Goldstein in rust_offtopic
https://github.com/scotty-web/scotty-starter/blob/master/Main.hs
Нашёл подробный пример — он использует >>. Т. е. да, значение из get отбрасывается. Зачем оно тогда, собственно?
источник

EG

Emmanuel Goldstein in rust_offtopic
get возвращает ScottyT e m ()
Из документации по ScottyT я могу узнать, что () это a.
Никакой информации, что вообще такое e, m и a — тупо нет.
источник

EG

Emmanuel Goldstein in rust_offtopic
Три однобуквенных имени, всё
источник

EG

Emmanuel Goldstein in rust_offtopic
Чтобы узнать, что e это error, m это middleware (что — у всего middleware один тип?..), а a — это эээ юнит для всех примеров, которые я пока видел — мне пришлось лезть в код
источник

EG

Emmanuel Goldstein in rust_offtopic
m — это не миддлвейр. m — это монада, через которую работает ввод-вывод, просто мне пришлось закопаться ещё на три уровня в код, чтобы это выяснить
источник

S

SedSub in rust_offtopic
Emmanuel Goldstein
Одноцветная асинхронность это вообще невероятный плюс
Одноцветная асинхронность это вообще невероятный понос
источник

EG

Emmanuel Goldstein in rust_offtopic
Doge Shibu
Вообще нужна не одноцветная, а асинхронность с полиморфизмом по цветам.
Кстати, продемонстрируй
источник

DS

Doge Shibu in rust_offtopic
Emmanuel Goldstein
Кстати, продемонстрируй
Ну условно:

whileM_ :: (Monad m) => m Bool -> m a -> m ()
whileM_ p f = go
   where go = do
           x <- p
           if x
               then f >> go
               else return ()
источник

DS

Doge Shibu in rust_offtopic
Могу похожим образом на расте с гат'ами, если хаскель не нравится
источник

DS

Doge Shibu in rust_offtopic
Или на скале
источник

EG

Emmanuel Goldstein in rust_offtopic
Я пока не сумел прочитать
источник

EG

Emmanuel Goldstein in rust_offtopic
Только не на скале, хаскелль читать  проще
источник

EG

Emmanuel Goldstein in rust_offtopic
Предположим, m это IO, скажем
IO bool это тогда, например, прочитать y/n из сети
источник

EG

Emmanuel Goldstein in rust_offtopic
a мы отбрасываем
источник

EG

Emmanuel Goldstein in rust_offtopic
Всё, распарсил
источник

EG

Emmanuel Goldstein in rust_offtopic
Но я плохо понимаю, как вообще работают асинхронные движки в хаскелле
источник

EG

Emmanuel Goldstein in rust_offtopic
Как можно расставить йилдпоинты по коду, который выполняется в хз каком порядке?
источник

s

suhr in rust_offtopic
Doge Shibu
Ну условно:

whileM_ :: (Monad m) => m Bool -> m a -> m ()
whileM_ p f = go
   where go = do
           x <- p
           if x
               then f >> go
               else return ()
О, монадкоцикл.
источник