Haskell 中缀运算符的应用程序样式?
在处理中缀运算符时,有没有一种方法可以使Haskell 中缀运算符的应用程序样式?,haskell,applicative,infix-operator,Haskell,Applicative,Infix Operator,在处理中缀运算符时,有没有一种方法可以使和的应用性使用看起来很好?我认为 ((++) <$> a <*> ((++) <$> b <*> c )) 因此,我想知道是否有更好的方法。请参阅Thomas Davie的软件包,它提供了一个通用的语法技巧,而不必为每次提升定义一个新的运算符。让您编写 (<++>) = liftA2 (++) a <++> b <++> c (|a ++ (|b ++ c|)|) 如
和
的应用性使用看起来很好?我认为
((++) <$> a <*> ((++) <$> b <*> c ))
因此,我想知道是否有更好的方法。请参阅Thomas Davie的软件包,它提供了一个通用的语法技巧,而不必为每次提升定义一个新的运算符。让您编写
(<++>) = liftA2 (++)
a <++> b <++> c
(|a ++ (|b ++ c|)|)
如果有什么用的话。当然,引入预处理层会有一些开销。如果它们都是同一个操作符,您可以使用
foldr1(liftA2(+)[a,b,c]
。是的-添加另一对尖括号。文档有点混乱。我认为OP的例子可以翻译为a(bc)
——你能确认/否认吗?
liftA2 (++) a $ liftA2 (++) b c
(|a ++ (|b ++ c|)|)