lomeo: (лямбда)
[personal profile] lomeo
Хорошая статья про монад-трансформеры для тех, кто ещё не понимает как с ними работать:
Monad transformers step-by-step

Re: читаю

Date: 2006-12-05 11:55 am (UTC)
From: [identity profile] lomeo.livejournal.com
тем, что при type - тип тот же, но синоним, а здесь другой (например можешь для этого типа сделать другой инстанс какого нибудь класса).

Re: читаю

Date: 2006-12-05 12:28 pm (UTC)
From: [identity profile] nealar.livejournal.com
Про инстанс я понимаю. А в жизни это зачем нужно? Вот тут у них, типа, конструктор свой, поэтому стандартных инстансов нет, так что, newtype используется не за этим.

newtype

Date: 2006-12-05 01:02 pm (UTC)
From: [identity profile] nealar.livejournal.com
Похоже, для экономии. Памяти под конструкторы или ещё чего-нибудь этакого. Я StateMonad писал через data - и ничего, работала. А у них через newtype.

Re: newtype

Date: 2006-12-05 01:09 pm (UTC)
From: [identity profile] lomeo.livejournal.com
Мы вроде type уже обсуждаем, а не data? Для data всё понятно - эффективность, тип то тот же самый остаётся.

Re: читаю

Date: 2006-12-05 01:07 pm (UTC)
From: [identity profile] lomeo.livejournal.com
Имхо, потому что синоним не позволяет полморфные типа, в данном случае не опишешь синоним для r -> m a.
А newtype позволяет определить тип со своим порядком следования полиморфных типов. И тогда мы можем сказать типа Monad (ReaderT r m) или MonadTrans (ReaderT r). Может быть за этим?

В смысле, описать то type MyReaderT r m a = r -> m a сможешь, а вот instance MonadTrans (MyReaderT r) хрен сделаешь, если я не ошибаюсь.

Re: читаю

Date: 2006-12-05 01:16 pm (UTC)
From: [identity profile] nealar.livejournal.com
Да, GHC не даёт. Я, правда, не понимаю, как он это обосновывает.

Re: читаю

Date: 2006-12-05 02:19 pm (UTC)
From: [identity profile] lomeo.livejournal.com
ХЗ, сейчас на ru_lambda спрошу.

Profile

lomeo: (Default)
Dmitry Antonyuk

April 2024

S M T W T F S
 123456
7891011 1213
14151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 14th, 2025 09:13 pm
Powered by Dreamwidth Studios