Зигохистоморфный
do нотация чаще читабельней)
Aleksei (astynax)
В монадическом коде - бывает
Aleksei (astynax)
ap f x = f >>= (=<< x) :) Жаль, что f >>= $ =<< x нельзя
Alexandr
Aleksei (astynax)
> :t \f x y -> x >>= (y >>=) . f
\f x y -> x >>= (y >>=) . f
:: Monad m => (a1 -> a -> m b) -> m a1 -> m a -> m b
Aleksei (astynax)
не тайпчекается :)
Alexander
иногда inline do нотация удобна
Alexandr
l2 :: Monad m => (a -> b -> c) -> m a -> m b -> m c
Alexander
но если это учебная задача, но это читерство
Alexandr
Nikolai
ну ты сам можешь исправить же
Nikolai
просто добавь воды^W return
Alexander
сейчас ещё весёлое сооружу
Aleksei (astynax)
l2 f x y -> x >>= (<$> y) . f
:: Monad m => (a1 -> a -> b) -> m a1 -> m a -> m b
Alexandr
Nikolai
сразу стало всё понятно, не правда ли? :)
Alexandr
не особо 🙃
Alexander
join $ fmap (join $ fmap f a) b :: Monad m => m a
предлагали?
Nikolai
Лёша пытался)
Aleksei (astynax)
Ага, мой вариант в виде шашлыка из fmap и join где-то выше :)
Alexander
можно даже join . fmap (join $ fmap f a)
Alexandr
да, но не проходит тайпчек
Nikolai
ну просто тут до сих пор f :: a -> b -> m c
Nikolai
убери лишний join
Nikolai
сам найди)
Kirill
мне одному тут кажется вариант с do-нотацией самым адекватным?)
Alexandr
я просто не совсем понимаю джоина функции
Alexander
fmap f a >>= \g -> g b
Alexandr
у нас есть m (b -> c), но join делает m (m a) -> m a
Alexander
а неэто не прокатит уже
Alexander
fmap f a :: f (m (b-> m c))
Nikolai
Alexander
если применяешь join то он: а, говорит что f ~ m, б. из m (m (b-> m c)) делает m (b -> m c)
Aleksei (astynax)
join помогает, когда до`fmap`аешься до двойного уровня вложенности :)
Alexander
или:
join $ atomically $ ... >> return (someIOEffect)
Ilya
Aleksei (astynax)
Ilya
Ilya
думаю многие поймут:)
Alexandr
в итоге решил вот так:
l2 f x y = fmap f x »= (<$>y)
спасибо за помощь!
Aleksei (astynax)
f <$> x >>= (<$> y) тогда уж для единообразия, или
fmap f x >>= (`fmap` y)
Alexandr
ну так красивее, да:)
Cheese
Cheese
митап-посиделки — это один "лёгкий" доклад
Cheese
под пиво/кофе
Cheese
если кот-нибудь предложит доклад
IC
ежегодный рейд рухаскеля в соседние данжи объявляется открытым!
https://bezkassira.by/fby_conference_2017-3092/
Кабачок
постоянно её читаю, а все из-за маленького словарного запаса, сложно придумывать названия для аргументов
Alexander
Ближайшие конференции:
28 Окрября - ITGM СПб
Декабрь 2 - Москва fpconf http://fpconf.ru/
Декабрь 17 - F(by) Conf http://fby.by
Cheese
Cheese
Cheese
Aleksei (astynax)
"главу про бесточечную запись", вестимо
Nikolai
Alexander
поздно о нём уже предупреждать наверное?
Nikolai
Кто-то будет там, кроме меня и Волкова?
Nikolai
Алсо, в феврале Lambda Days в Польше
Denis
я бойкотирую великобританию, так что нет
Nikolai
Denis
теперь это взаимно
Nikolai
http://www.lambdadays.org/lambdadays2018
Leonid 🦇
что за ITGM?
Leonid 🦇
http://piter-united.ru/itgm11/ это?
Влод
видимо да
Влод
там все подряд кто хоть как-то имеет отношение к ит, так что наверное скучно
Leonid 🦇
да, мутновато
Anonymous
а разве не интересно пообщаться с людьми, которые занимаются чем-то другим?
Leonid 🦇
Например?
Cheese
Denis
не расскажу, это не про хаскелль
Anonymous
а кто-нибудь пользуется https://github.com/enomsg/vim-haskellConcealPlus ?
Vasiliy
я пробовал - выглядит прикольно, конечно, но редактировать такой код нереально
Vasiliy
на текущей строке все эти штуки разворачиваются, в итоге нажимая, скажем, j ожидаешь, что попадёшь в одно место, а оказываешься в совершенно другом
Anonymous
оо, в емаксе только если возле символа
Vasiliy
лучше использовать шрифт с лигатурами типа FiraCode, Hasklig или PragmataPro
Vasiliy
а если хочешь, чтоб тебя возненавидели, включай UnicodeSyntax :D
Dmitrii
Кстати, кто-нибудь смог настроить FiraCode на emacs на какой-нибудь убунте? Я пытался одно время, но не особо вышло :(