Size: a a a

2017 December 05

к

кана in Haskell Start
мне очень помогла https://habrahabr.ru/post/327030/ на скалке
источник

AP

Anatolii Prylutskyi in Haskell Start
Мне вот эти статьи никак не помогали, сесть и пописать сразу поставило все на свои места
источник

P

PsyDebug in Haskell Start
в итоге получилось всё просто. так
источник

P

PsyDebug in Haskell Start
suid :: ActionM()
suid = do
       zt <- liftIO getZonedTime
       ty <- return (formatTime defaultTimeLocale "%Y%m%d%H%M%S" zt)
       text $ pack ty
источник

к

кана in Haskell Start
x <- return y

это то же самое, что и
let x = y
источник

P

PsyDebug in Haskell Start
для единобразия.
источник

P

PsyDebug in Haskell Start
вобщем благодарю.
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Есть такой пейпер: All about Monads. Категорически рекомендую. Там и примеры для искоробочных Reader, State и проч. есть и про трансформеры хорошо написано
источник

VY

Vasiliy Yorkin in Haskell Start
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Ага
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
Существует и в виде PDF (где-то там в вики ссылка была)
источник

λO

λeonid Onokhov in Haskell Start
PsyDebug
для единобразия.
return и  >>= могут быть не дешевыми. лучше таки let
источник

P

PsyDebug in Haskell Start
а, понял.
источник

YS

Yuriy Syrovetskiy in Haskell Start
кана
x <- return y

это то же самое, что и
let x = y
однако если слева refutable pattern, то есть разница
источник

e

egoarka in Haskell Start
оффтоп.
Заметил такую вещь: обычно, когда говорят, что типа сложно, нереально понять, "новички не осилят" и т.п., то на подсознательном уровне откладывается это. И в дальнейшем это мнение мешает разобраться в проблеме самостоятельно, а когда такие мнения накапливаются одно за другим, то и вовсе не хочется браться за проблему. Но иногда, конечно, это и придает мотивации, чтобы доказать себе, мол "я смогу". Не знаю, может у меня одного так.
источник
2017 December 06

VY

Vasiliy Yorkin in Haskell Start
Yuriy Syrovetskiy
однако если слева refutable pattern, то есть разница
а можно пример? не получается сходу представить
источник

VY

Vasiliy Yorkin in Haskell Start
хм, читаю https://wiki.haskell.org/Foldr_Foldl_Foldl%27 и там используется seq, но:
A note on evaluation order: the expression seq a b does not guarantee that a will be evaluated before b. The only guarantee given by seq is that the both a and b will be evaluated before seq returns a value. In particular, this means that b may be evaluated before a. If you need to guarantee a specific order of evaluation, you must use the function pseq from the "parallel" package.

смотрю как реально реализован foldl' и там $! вместо seq:

    foldl' :: (b -> a -> b) -> b -> t a -> b
   foldl' f z0 xs = foldr f' id xs z0
     where f' x k z = k $! f z x


мне понятно что делает $!, но как и почему он работает?

($!)                    :: (a -> b) -> a -> b
f $! x                  = let !vx = x in f vx  -- see #2273
источник

VY

Vasiliy Yorkin in Haskell Start
а, это BangPatterns:
https://ghc.haskell.org/trac/ghc/ticket/2273#comment:1
https://downloads.haskell.org/~ghc/7.8.4/docs/html/users_guide/bang-patterns.html
ладно, на каком-то уровне разобрался вроде
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
egoarka
оффтоп.
Заметил такую вещь: обычно, когда говорят, что типа сложно, нереально понять, "новички не осилят" и т.п., то на подсознательном уровне откладывается это. И в дальнейшем это мнение мешает разобраться в проблеме самостоятельно, а когда такие мнения накапливаются одно за другим, то и вовсе не хочется браться за проблему. Но иногда, конечно, это и придает мотивации, чтобы доказать себе, мол "я смогу". Не знаю, может у меня одного так.
Иногда, когда говорят "сложно", при этом передлагают что-то - литературу, примеры - что потенциально поможет в последствии "сложное" понять лучше/легче. Если не предлагают, то надо попросить, чтобы предложили, если и после этого не предложать - можно смело называть снобами :)
источник

AP

Aleksei (astynax) Pirogov in Haskell Start
В любой области знания есть некие соотношения между концепциями. И зависимости. И часто зависимые вещи познаются проще, если сначала познать их зависимости.

Поэтому, например - это моё личное наблюдение, но примеров этому я много видел - те же Монады понимаются сильно проще, если не "начать сразу фигачить, потом понимание придёт", а изучить сначала функторы ("обычный" и аппликативный).

То же самое с монадными трансформенами - если человек сначала сам попишет код с парой разных монад, засунутых одна в другую, то потом трансформеры хорошо "зайдут", как систематизация полученного опыта. И если я лично где-то скажу, что "монадные трансформеры, это сложновато новичку", то скорее всего это будет означать "пока новичок не наигрался с отдельными монадами, лезть в трансформеры и портисть себе удовольствие и понимание не стоит"
источник