Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 中缀运算符的应用程序样式?_Haskell_Applicative_Infix Operator - Fatal编程技术网

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|)|)