Size: a a a

2017 December 05

MB

Mike Bohdan in Haskell Start
Ок, спасибо
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
PsyDebug
вопросы уже можно сюда вкидывать?
конечно :)
источник

А

А ВОТ НА RUST'е ... in Haskell Start
Aleksei (astynax) Pirogov
А список литературы есть на ruhaskell.ru
источник

P

PsyDebug in Haskell Start
Я в основной чат вчера спрашивал, мне подсказали, но понимания так и не пришло. Прочитал: "О хаскель простым языком" и частично "Учебник по хаскель". Пошлите куда нибудь, чтоб я понял как разобраться с типом в следующей конструкции:
suid :: ActionM ()
suid = do
   zt <- getZonedTime
   text (formatTime defaultTimeLocale "%Y%m%d%H%M%S" zt)


Мне вчера подсказали  так:
liftIO :: IO ZonedTime -> ActionM ZonedTime
Но думаю мне не хватает чего-то для осознания
источник

GP

Gleb Patsiia in Haskell Start
Могу посоветовать "Изучай хаскель во имя добра", единственное из минусов в главе аппликативных функторов (которую дочитал сам только на выходных) примера более приближенного к реальной жизни  чем этот - нет,  а уж тем более не строчки из веба :)

(+) <$> (+3) <*> (*100) $ 5
источник

к

кана in Haskell Start
PsyDebug
Я в основной чат вчера спрашивал, мне подсказали, но понимания так и не пришло. Прочитал: "О хаскель простым языком" и частично "Учебник по хаскель". Пошлите куда нибудь, чтоб я понял как разобраться с типом в следующей конструкции:
suid :: ActionM ()
suid = do
   zt <- getZonedTime
   text (formatTime defaultTimeLocale "%Y%m%d%H%M%S" zt)


Мне вчера подсказали  так:
liftIO :: IO ZonedTime -> ActionM ZonedTime
Но думаю мне не хватает чего-то для осознания
смотри, getZonedTime - функция от IO.
ActionM - это IO, обернутый еще в ActionT (образно
ActionM a = ActionT (IO a)

ActionT внутри достаточно сложный (это эксепт, ридер и стейт), поэтому давай предположим, что это просто
newtype ActionT a = ActionT a

очевидно, что вызвать getZonedTime нельзя, ведь у нас не IO, а ActionM, но IO есть внутри, поэтому чтобы все тайпчекалось, нужно просто результат вызова обернуть в ActionT, именно это lift и делает (liftIO на самом деле еще и рекурсивный и там все круче)


lift :: IO a -> ActionM a
lift m = ActionT m

suid :: ActionM ()
suid = do
 zt <- lift getZonedTime
 pure ()


Но ActionM куда сложнее и поэтому там обычного lift не хватит, нужен liftIO, который просто рекурсивно ходит по всем вложенным друг в друга типам и находит IO
источник

ZK

Zheka Kozlov in Haskell Start
ActionM - это вообще из какой библиотеки?
источник

к

кана in Haskell Start
Scotty
источник

к

кана in Haskell Start
источник

P

PsyDebug in Haskell Start
кана
смотри, getZonedTime - функция от IO.
ActionM - это IO, обернутый еще в ActionT (образно
ActionM a = ActionT (IO a)

ActionT внутри достаточно сложный (это эксепт, ридер и стейт), поэтому давай предположим, что это просто
newtype ActionT a = ActionT a

очевидно, что вызвать getZonedTime нельзя, ведь у нас не IO, а ActionM, но IO есть внутри, поэтому чтобы все тайпчекалось, нужно просто результат вызова обернуть в ActionT, именно это lift и делает (liftIO на самом деле еще и рекурсивный и там все круче)


lift :: IO a -> ActionM a
lift m = ActionT m

suid :: ActionM ()
suid = do
 zt <- lift getZonedTime
 pure ()


Но ActionM куда сложнее и поэтому там обычного lift не хватит, нужен liftIO, который просто рекурсивно ходит по всем вложенным друг в друга типам и находит IO
Добро, поосознаю это посижу немного
источник

ZK

Zheka Kozlov in Haskell Start
Не знаю, Scotty это уже не для новичков, ИМХО
источник

ЕО

Евгений Омельченко in Haskell Start
Мы нащупали Корневой Срач Чата. Что для новичков, а что -- нет
источник

Вл

В ладу in Haskell Start
блин а мб ещё создать чат где разобрался с основами и бежишь покорять мтл, линзы, профункторы, тайплевел
источник

Вл

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

ln

leon nikitin in Haskell Start
Aleksei (astynax) Pirogov
Кароч, я, как человек заинтересованный (зря что ли я курс свой пытаюсь читать?), (бессовестно) предлагаю посильную помощь хотя бы в том же написании правил для чатика :)
А про Depended Types где тогда спрашивать? (надеюсь за этот вопрос формально не забанят)
источник

Вл

В ладу in Haskell Start
ищешь инфу по осколкам этих пейперов и пары предложений в хакедже
источник

ЕО

Евгений Омельченко in Haskell Start
В ладу
блин а мб ещё создать чат где разобрался с основами и бежишь покорять мтл, линзы, профункторы, тайплевел
Как жалко, что телеграм не слак
источник

ZK

Zheka Kozlov in Haskell Start
Как хорошо, что телеграм не слак
источник

λO

λeonid Onokhov in Haskell Start
Ппц вы разнылись. Спрашивать можно, советовать нельзя.
источник

ЕО

Евгений Омельченко in Haskell Start
leon nikitin
А про Depended Types где тогда спрашивать? (надеюсь за этот вопрос формально не забанят)
Есть чатик про зависимые типы https://t.me/joinchat/AAAAAD9SWO_tLd7rJ9S7Ig
источник