Size: a a a

2020 December 23

к

кана in Haskell
ничего полезного этот hlint не говорит, смело можно его вырубать
источник

АХ

Алексей Худяков... in Haskell
Чтобы он нормально находил лишние скобочки надо половину варнингов отключать
источник

YS

Yan Shkurinskiy in Haskell
Jerzy Syrowiecki
сейчас проверил: No hints
https://t.me/haskellru/316548
именно так проверил?
источник

JS

Jerzy Syrowiecki in Haskell
а, я не заметил, что там второй (^.), конечно, так не надо
источник

JS

Jerzy Syrowiecki in Haskell
а скобки ты и сам можешь убрать
источник

YS

Yan Shkurinskiy in Haskell
ну вот скобки да
источник

YS

Yan Shkurinskiy in Haskell
первый день с линзами!
источник

YS

Yan Shkurinskiy in Haskell
учусь
источник

Y

Yuuri in Haskell
Yan Shkurinskiy
первый день с линзами!
С почином!
источник

YS

Yan Shkurinskiy in Haskell
Ага, спасибо с:
источник

YS

Yan Shkurinskiy in Haskell
ну вроде с линзами повеселее
источник

YS

Yan Shkurinskiy in Haskell
надо будет комбинаторы поизучать
источник

к

кана in Haskell
-- |
-- Examples:
-- >>> x = (["a.b", "c.d"], 10)
-- >>> x & _1 %~ (>>= splitOn ".")
-- (["a", "b", "c", "d"], 10)
-- >>> x & _1 . bound %~ splitOn "."
-- (["a", "b", "c", "d"], 10)
bound :: Monad m => Setter (m a) (m b) a (m b)
bound = sets (=<<)

-- |
-- Examples:
-- >>> "abc" ^? prefixed "a"
-- Just "bc"
-- >>> "Abc" ^? prefixed "a"
-- Nothing
-- >>> "abc" & prefixed "a" %~ Text.toUpper
-- "aBC"
-- >>> "Abc" & prefixed "a" %~ Text.toUpper
-- "abc"
prefixed :: Text -> Traversal' Text Text
prefixed prefix next text =
 case Text.stripPrefix prefix text of
   Just suffix -> liftA2 (<>) (pure prefix) (next suffix)
   Nothing -> pure text

-- |
-- Examples:
-- >>> Map.fromList [("a", 1), ("b", 2), ("c", 3)] ^.. ixes (Set.fromList ["a", "b", "d"])
-- [1, 2]
ixes :: (Monoid r, Ixed s, Foldable t) => t (Index s) -> Getting r s (IxValue s)
ixes = foldMap ix
источник

к

кана in Haskell
несколько прикольных штук которых нет в lens
источник

к

кана in Haskell
но которые оч полезные (ну кроме первого, первый просто красивый, юзкейс я только один придумал)
источник

JS

Jerzy Syrowiecki in Haskell
кана
-- |
-- Examples:
-- >>> x = (["a.b", "c.d"], 10)
-- >>> x & _1 %~ (>>= splitOn ".")
-- (["a", "b", "c", "d"], 10)
-- >>> x & _1 . bound %~ splitOn "."
-- (["a", "b", "c", "d"], 10)
bound :: Monad m => Setter (m a) (m b) a (m b)
bound = sets (=<<)

-- |
-- Examples:
-- >>> "abc" ^? prefixed "a"
-- Just "bc"
-- >>> "Abc" ^? prefixed "a"
-- Nothing
-- >>> "abc" & prefixed "a" %~ Text.toUpper
-- "aBC"
-- >>> "Abc" & prefixed "a" %~ Text.toUpper
-- "abc"
prefixed :: Text -> Traversal' Text Text
prefixed prefix next text =
 case Text.stripPrefix prefix text of
   Just suffix -> liftA2 (<>) (pure prefix) (next suffix)
   Nothing -> pure text

-- |
-- Examples:
-- >>> Map.fromList [("a", 1), ("b", 2), ("c", 3)] ^.. ixes (Set.fromList ["a", "b", "d"])
-- [1, 2]
ixes :: (Monoid r, Ixed s, Foldable t) => t (Index s) -> Getting r s (IxValue s)
ixes = foldMap ix
первый пример какой-то немотивирующий. зачем обобщать список до монады, если и concat хорошо работает?
источник

к

кана in Haskell
да хм, вопрос у меня обычно стоит иначе
источник

к

кана in Haskell
про concat и concatMap еще нужно вспомнить, а инстанс монады всегда в голове
источник

к

кана in Haskell
а еще не факт что они в прелюде
источник

MK

Maxim Koltsov in Haskell
а я стараюсь инстанс монады для списка в голове не держать
источник