Size: a a a

2020 June 26

к

кана in Haskell
пара например
источник

TA

Tel Asc in Haskell
wrapStateTF :: (Monad m,Traversable w)=>StateT s m b -> StateT (w s) m b
wrapStateTF s = StateT (\x -> fmap sequence $ sequence $ fmap (runStateT s) x)
источник

к

кана in Haskell
а ну тут как раз пара и всплывает вроде бы
источник

к

кана in Haskell
источник

TA

Tel Asc in Haskell
А есть какой-то отдельный клас именно для sequence?
т.е. для пары sequence можно и так определить:
sequence (a,mb) = fmap (a,) mb
источник

к

кана in Haskell
newtype со своим инстансом аппликатива
источник

TA

Tel Asc in Haskell
Для ньютайпа можно вообще автоматически сделать deriving в Applicative,Foldable,Traversable?
источник

к

кана in Haskell
можно, но если ты это сделаешь, то получишь старые инстансы, а ты же намеренно делаешь ньютайп чтобы сделать свой новый
источник

TA

Tel Asc in Haskell
Ясно,я тогда пойду сделаю отдельную функцию для пары и ее юзну ...
источник

к

кана in Haskell
но как сделать инстанс аппликатива для пары без моноида не понятно
источник

к

кана in Haskell
типа откуда взять первый элемент-то?
источник

к

кана in Haskell
предположим что в качестве w у тебя будет список
источник

к

кана in Haskell
и в качестве стейта передатут пустой список
источник

к

кана in Haskell
откуда взяться результату b?
источник

к

кана in Haskell
wrapStateTF :: (Monad m, Traversable w) => StateT s m b -> StateT (w s) m (Maybe b)
источник

к

кана in Haskell
вот так придется делать
источник

к

кана in Haskell
или (w b)
источник

к

кана in Haskell
wrapStateTF :: (Monad m, Traversable w) => StateT s m b -> StateT (w s) m (w b)
wrapStateTF m = StateT \ss -> do
 results <- traverse (runStateT m) ss
 pure (fmap fst results, fmap snd results)


наверное ты хочешь это
источник

TA

Tel Asc in Haskell
Не,я хотел именно первое...
Но я подумал,что все равно я буду в качестве возвращаемого значения юзать ()...
Так что...
источник

к

кана in Haskell
то есть задача получить только итоговый стейт для каждого входного?
источник