Size: a a a

2020 November 30

к

кана in Haskell
Kirill Valyavin
Как бы через линзы сделать такое: одновременно достать какой-то кусок структуры и применить эффектфул-операцию к чему-то в этом куске, типа
_ ( "not needed"
  , [ (True, "print me")
    , (False, "print me too")
    ]
  ) :: IO [(Bool, ())]
как минимум так получилось, но думаю можно и без writer
источник

AA

A64m AL256m qn<co... in Haskell
Kirill Valyavin
Чтобы "print me" и "print me too" напечаталось
> ("not needed", [(True, "print me"), (False, "print me too")]) & _2 . each . _2 %%~ putStrLn 
print me
print me too
источник

к

кана in Haskell
нужно же еще вернуть
источник

MK

Maxim Koltsov in Haskell
ммм id
источник

AA

A64m AL256m qn<co... in Haskell
кана
нужно же еще вернуть
вернется
источник

к

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

к

кана in Haskell
вернется ("not needed", [(), ()])
источник

AA

A64m AL256m qn<co... in Haskell
> ("not needed", [(True, "print me"), (False, "print me too")]) & _2 . each . _2 %%~ putStrLn 
print me
print me too
("not needed",[(True,()),(False,())])
источник

AA

A64m AL256m qn<co... in Haskell
а, понял
источник

к

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

к

кана in Haskell
not needed не нужен
источник

к

кана in Haskell
а скомпозировать Const и IO не выйдет
источник

к

кана in Haskell
только вот с WriterT IO придумал
источник

KV

Kirill Valyavin in Haskell
%%~ это id?
источник

к

кана in Haskell
да, это как тут я просто применил к линзе функцию
источник

к

кана in Haskell
Переслано от кана
x' <- getConst <$> flip (_2 . each) x \(a, b) -> do
 print b
 pure $ Const [(a, b)]
источник

к

кана in Haskell
имхо %%~ не нужен, fmap . fmap и traverse мы же без %~ применяем
источник

AV

Alexander Vershilov in Haskell
("not needed"::String,  [(True, "print me"), (False, "print me too")]) ^. _2 & each . _2 %%~ putStrLn
источник

AV

Alexander Vershilov in Haskell
так ведь нельзя?
источник

KV

Kirill Valyavin in Haskell
Можно, я так почти и делаю
источник