Size: a a a

2021 January 07

AP

Aleksei (astynax) Pi... in Haskell
Скобки бы не мешали, если бы <&> и & имели сходные с "обратными" вариантами фиксити
источник

AP

Aleksei (astynax) Pi... in Haskell
Собсно, infixr 5 <&> был бы норм, наверное
источник

AP

Aleksei (astynax) Pi... in Haskell
> :{
(<.>) = (<&>)
infixr 5 <.>
:}
> 5 & (+ 1) <.> show
"6"
источник

JS

Jerzy Syrowiecki in Haskell
у ($) и (&) тоже приоритеты разные, несмотря на логическую симметрию
источник

JS

Jerzy Syrowiecki in Haskell
λ> :i $ &
infixr 0 $
infixl 1 &
источник

AP

Aleksei (astynax) Pi... in Haskell
Выше я это уже отметил
источник

AP

Aleksei (astynax) Pi... in Haskell
Это различие позволяет смешивать эти два оператора в одном выражении
источник

AP

Aleksei (astynax) Pi... in Haskell
Но смешивание именно & и <&> работает плохо
источник

AP

Aleksei (astynax) Pi... in Haskell
(не так, как хотелось бы)
источник

AP

Aleksei (astynax) Pi... in Haskell
Aleksei (astynax) Pirogov
Это различие позволяет смешивать эти два оператора в одном выражении
pure $
 a & foo +~
1

удобно, например
источник

JS

Jerzy Syrowiecki in Haskell
а ещё можно "инфиксить" целые выражения:

map1 & Data.Map.unionWith (+) $ map2
==
Data.Map.unionWith (+) map1 map2
источник

AP

Aleksei (astynax) Pi... in Haskell
(/me ещё любит трюк с инфиксным flip, просто к слову)
источник

MK

Maxim Koltsov in Haskell
Aleksei (astynax) Pirogov
(/me ещё любит трюк с инфиксным flip, просто к слову)
Может ты ещё и сечение композиции любишь?
источник

AP

Aleksei (astynax) Pi... in Haskell
Люблю. Не злоупотребляю
источник

JS

Jerzy Syrowiecki in Haskell
Jerzy Syrowiecki
а ещё можно "инфиксить" целые выражения:

map1 & Data.Map.unionWith (+) $ map2
==
Data.Map.unionWith (+) map1 map2
кстати, забавно, что чаще всего я использую бэктики наоборот — для "префиксной" формы:

(`runReaderT` a) $ (`runStateT` b) $ do
 ...
источник

JS

Jerzy Syrowiecki in Haskell
Aleksei (astynax) Pirogov
(/me ещё любит трюк с инфиксным flip, просто к слову)
в lens есть (??), с ним ещё красивее
источник

G

GNU/Vsevolod in Haskell
Aleksei (astynax) Pirogov
Имелась в виду развернутая композиция
Да, к примеру, есть
contents <- getArgs >>= readFile . head <&> lines
но
contents <- getArgs >>= head >>> readFile <&> lines
выглядит читабельнее, т.к. функи в соответствующем порядке слева направо. Но из-за прецедентности >>> придется в скобки брать
источник

JS

Jerzy Syrowiecki in Haskell
(`f` a) == f `flip` a == f ?? a
источник

MK

Maxim Koltsov in Haskell
Отвратительно
источник

JS

Jerzy Syrowiecki in Haskell
GNU/Vsevolod
Да, к примеру, есть
contents <- getArgs >>= readFile . head <&> lines
но
contents <- getArgs >>= head >>> readFile <&> lines
выглядит читабельнее, т.к. функи в соответствующем порядке слева направо. Но из-за прецедентности >>> придется в скобки брать
но <- портит всё
источник