@frp_ru

Страница 280 из 420
Denis
29.11.2017
13:50:25
идея то одна

https://www.schoolofhaskell.com/user/edwardk/cellular-automata/part-2 http://squing.blogspot.com/2008/11/beautiful-folding.html http://conal.net/blog/posts/another-lovely-example-of-type-class-morphisms http://conal.net/blog/posts/more-beautiful-fold-zipping http://www.haskellforall.com/2013/08/composable-streaming-folds.html https://www.tweag.io/posts/2017-11-01-streaming-and-foldl.html https://gist.github.com/michaelt/ac5dc5a08f7631639537d5bcf379f225

Google
Denis
29.11.2017
13:53:15
в Черче (левый фолд)

обобщение правого - catamorphism

через Mu

andretshurotshka?❄️кде
29.11.2017
13:57:27
а че фьюжн сам не происходит в хаскелле?

Denis
29.11.2017
13:57:54
смотря чего

andretshurotshka?❄️кде
29.11.2017
13:57:58
http://conal.net/blog/posts/another-lovely-example-of-type-class-morphisms это про эту

Denis
29.11.2017
13:58:04
если рулы прописаны то ок

andretshurotshka?❄️кде
29.11.2017
13:58:16
хотя это 2008)

Denis
29.11.2017
13:58:42
все идеи стары как модели (просто нормально толком никто не сделал)

andretshurotshka?❄️кде
29.11.2017
14:00:00
я про то что хаскелл в 2010 меняли)

или фьюжн всегда был?

Kelin
29.11.2017
14:08:43
я про то что хаскелл в 2010 меняли)
а че апдейтов у хаскеля больше не было?

andretshurotshka?❄️кде
29.11.2017
14:08:52
были

Google
illiatshurotshka❄️
29.11.2017
14:11:45
у стандарта

? animufag ?
29.11.2017
14:51:38
(+) <$> (+3) <*> (*100) $ 5
здесь используется инстанс функтора и аппликатива для функции а точнее для (-> a) (<$>) :: Functor f => (a -> b) -> f a -> f b где f — (-> a) (<$>) :: Functor f => (a -> b) -> (a -> c) -> (b -> c)

Vasiliy
29.11.2017
14:53:30
знакомая задачка из курса по хаскелю на степике)

Gleb
29.11.2017
15:02:38
Из книги изучай хаскель во имя добра

? animufag ?
29.11.2017
15:05:26
здесь не очень оче что все аргументы Num a

лучше бы вместо плюса функция с сигнатурой a -> b -> c

? animufag ?
29.11.2017
15:07:03
ого ну там малость сложновато

Vasiliy
29.11.2017
16:26:24
Из книги изучай хаскель во имя добра
а, или от туда, я просто помню 508 было где-то :) из задачек мне больше всего понравились вот отсюда http://www.seas.upenn.edu/~cis194/spring13/lectures.html они простые, но их еще и делать более-менее интересно (особенно 1, 7, 10, 11) (в смысле из задачек на начальном уровне) а, вспомнил/нашел, на степике была вот такая: return 2 >>= (+) >>= (*) $ 4

Gleb
29.11.2017
17:06:18
Отлично спасибо залипну в выхи

Кстати, поиграться на есоде даст норм закрепление пройденного?

https://www.yesodweb.com

Не нашел просто больше чем себя занять

? animufag ?
29.11.2017
17:11:06
думаю будет нудно

kana
29.11.2017
17:12:43
пописал я на хаскеле неделю реального кода

Gleb
29.11.2017
17:12:57
и чем скоротают время знатоки хаскеля

kana
29.11.2017
17:13:00
и теперь понимаю, почему лучше менять mtl на фримонады

kana
29.11.2017
17:16:04
тестировать ReaderT Env IO () какой-нибудь невозможно

Denis
29.11.2017
17:16:20
ну тогда уж фриер эффекты

Google
kana
29.11.2017
17:17:12
да я бы хотел написать дсл-ку с нужными мне командами, а в интерпретатор весь этот хлам вынес эффектный

? animufag ?
29.11.2017
17:17:20
блин как-то не особо есть время подбирать вопросы но кажется здесь есть что-то интересное

Denis
29.11.2017
17:17:54
хорошо) свободнейшие монады в Черче как переход в Cont

? animufag ?
29.11.2017
17:18:04
то есть например просто IO ок тестировать?

если да то как

минимальный пример

или в чём был вообще посыл

kana
29.11.2017
17:19:50
нет, вот как IO тестировать я как раз хз

посыл был в том, чтоб убрать из бинес-логики IO, вынести его в интерпретатор

и тестировать бизнес-логику легко (и кое-как тестировать маленький интерпретатор)

Denis
29.11.2017
17:20:34
https://twitter.com/xgrommx/status/935533662413754368

? animufag ?
29.11.2017
17:20:38
а ты про то что теперь код завсящий только от ридера не отстакать от IO кода?

Denis
29.11.2017
17:21:18
я вчера начал писать HORS в стиле Кметта https://gist.github.com/xgrommx/4c72ae9d407214deab55fe9aebc08b45

kana
29.11.2017
17:21:48
ну вот была функция data Env = Env { _options :: Options , _config :: Config , _handle :: SlackHandle } makeLenses ''Env type Bot = ReaderT Env IO putMessage :: Text -> Bot () putMessage t = do handle' <- view $ handle channelId' <- view $ options.channelId handleEither () $ liftIO $ S.sendRichMessage handle' channelId' t []

kana
29.11.2017
17:23:02
тестить функцию почти невозможно, чтобы ее протестить нужно sendRichMessage тоже в Reader пихать

? animufag ?
29.11.2017
17:24:12
ну вот была функция data Env = Env { _options :: Options , _config :: Config , _handle :: SlackHandle } makeLenses ''Env type Bot = ReaderT Env IO putMessage :: Text -> Bot () putMessage t = do handle' <- view $ handle channelId' <- view $ options.channelId handleEither () $ liftIO $ S.sendRichMessage handle' channelId' t []
ну пока что не показательно. вся функция просто читает и посылает аргументы. ну она могла бы принимать ридер и возвращать чистую функцию от 2х аргументов например

Denis
29.11.2017
17:24:44
https://www.fpcomplete.com/blog/2017/06/readert-design-pattern

Google
? animufag ?
29.11.2017
17:42:49
не она

putMessage отвзяать от sendRichMessage

чтобы первая стала тестируемой

правда у первой всё такое в контексте ридера крутится и от этого контекста особо не избавиться.

а что нельзя как в императивной параше подрубить fakeIO с замоканными функциями?

kana
29.11.2017
17:51:59
чтобы первая стала тестируемой
ну вот я и говорю, можно вынести sendRichMessage в ридер тоже

но это будет такое себе тоже

Denis
29.11.2017
18:02:26
ридер ничего более чем просто врапнутая стрелка

? animufag ?
29.11.2017
18:04:32
ну ок

лучше им не пользоваться?

Admin
ERROR: S client not available

Denis
29.11.2017
18:21:45


Hitomi's
29.11.2017
18:46:09
Всем привет, у меня тут снова к вам вопрос

почему Task (Future) считается чистым в отличии от промисов. Что Task, что промис не могут быть чистыми, потому что идет http запрос, в чем подвох?

https://drboolean.gitbooks.io/mostly-adequate-guide/content/ch8.html#asynchronous-tasks - тут вычитал

"if you aren't familiar with promises, we won't be using them anyhow because they are not pure"

andretshurotshka?❄️кде
29.11.2017
18:49:18
потому что таски ленивые

Hitomi's
29.11.2017
18:50:19
ой, это я опечатался

потому что таски ленивые
А чуть подробней плиз

Google
Hitomi's
29.11.2017
18:50:50
на каком-то примере

можно?

andretshurotshka?❄️кде
29.11.2017
18:50:59
>To run our Task, we must call the method fork.

illiatshurotshka❄️
29.11.2017
18:51:22
они и не считаются чистыми, с чего ты взял-то?
тогда какой смысл несет то предложение?

вроде подразумевается контраст

? animufag ?
29.11.2017
18:52:49
мы не будем использовать промизы тк они не являются чистыми в то время как таски ленивые

бам! контраст

Дмитрий
29.11.2017
18:53:27
Тут безо всяких высоких материй всё очевидно

illiatshurotshka❄️
29.11.2017
18:53:31
мне кажется он хотел сказать что они не функциональные

Дмитрий
29.11.2017
18:54:04
У промиса просто then в котором разные подходы напиханы в слабо типизируемую функцию

illiatshurotshka❄️
29.11.2017
18:54:09
мне кажется он хотел сказать что они не функциональные
потому что одна функция выполняет роль двух

andretshurotshka?❄️кде
29.11.2017
18:54:14
промисы сразу запускаются

а таск только с помощью fork

Hitomi's
29.11.2017
18:54:27
я понял уже

спасибо

? animufag ?
29.11.2017
18:54:47
блин тут такая нераскрытая история

Hitomi's
29.11.2017
18:54:49
мы кароч можем зарезолвить а потом когда надо заюзать

Дмитрий
29.11.2017
18:54:51
а таск только с помощью fork
Я по моему в итоге так форк ни разу и не юзал

andretshurotshka?❄️кде
29.11.2017
18:54:51
сам таск чистый)

? animufag ?
29.11.2017
18:54:58
а ты всегда всех затыкаешь что уже всё понял

Hitomi's
29.11.2017
18:55:55
я понял уже звучало не как "да заткнись ты" а как "вот уже понял"

? animufag ?
29.11.2017
18:56:01
можно раскидать таску и промиз по табличке ленивый/энергичный и чистый/грязный

Страница 280 из 420