БЕГЕМОТИКОВ МОЖНО! Войти !bnw Сегодня Клубы
ТУНЕЛЛИРУЮ ТУНЕЛЛИРУЮ Правда, волшебный автовывод инстенсов так и не осилил. Пришлось остановиться на таком говне: class (MonadIO o) => EmbedIO o where type Content o callback :: o a -> Content o -> IO a -- If the inner monad is IO data Void instance EmbedIO IO where type Content IO = Void callback action _ = action и в приложении: runNPT_ :: NPT a -> NPTState -> IO a runNPT_ x s = do runReaderT x s instance EmbedIO NPT where type Content NPT = NPTState callback act cont = runNPT_ act cont Модифицируемый стейт будет в IORef'ах. Уродливо, но лучше я не придумал; не переписывать же MState, чтобы был кишками наружу, дабы можно было инстенс написать.
#W0KPPP / @l29ah / 4376 дней назад

Лол, быдло-лаваш таки написал MonadIO, как я и говорил, хотя вначале кидался говном, как распоследнее быдло. Держи ещё парочку бесплатных советов: Свою монаду поверх MonadIO писать не надо, всё делается проще (осиль подсветку кода, кстати, мудило):
newtype XMPP a = XMPP { unXMPP :: ReaderT XMPPState IO a }
    deriving (Monad, MonadIO)
операции над стейтом делаются как:
XMPPState { .. } <- XMPP ask
liftIO $ atomically $ modifyTVar' …
IORef никто не использует, оно тормозное и говно, возможности thread-safe сильно ограничены. Все нормальные люди используют STM И TVar'ы. MState тоже самое, кому нахуй нужны MVar'ы? Ты специально используешь самые уёбищные структуры типо String, MVar, IORef, чтобы либу в итоге никто не использовал? >callback action _ = action callback = const action >runNPT_ x s = do runReaderT x s runNPT_ = runReaderT P.S. >инстенс Совсем мудак? Инстанс.
#W0KPPP/YL2 / @anonymous / 4375 дней назад
@kagami > как я и говорил Просто потому, что > волшебный автовывод инстенсов так и не осилил > Свою монаду Чё? > newtype XMPP a = XMPP { unXMPP :: ReaderT XMPPState IO a } Ты наркоман? Мне нужен класс, поскольку тип заранее я не знаю. > modifyTVar Нахуя тварь? > оно тормозное и говно Быстрее тварей. > возможности thread-safe сильно ограничены Запихиваем в него все рекорды, выгода. Правда, поди, тормозить будет больше, так что надо будет подумать над этим. > MState тоже самое MState имеет инстенс для State, в отличие от велосипедизма. > самые уёбищные структуры типо String, MVar, IORef, чтобы либу Я их использую в приложении, использующем либу, котя. > [придирки к стилю] Мне насрать. Пиши патчи, может приму.
#W0KPPP/4ZW / @l29ah --> #W0KPPP/YL2 / 4375 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.