< $运算符的翻转版本

时间:2014-01-25 12:57:58

标签: haskell

当我遇到(<$) :: Functor f => a -> f b -> f a(Functor的一部分)时,我正在使用Parsec并试图用Applicative样式编写它,利用Applicative和Functor提供的各种好的中缀运算符。

对于Parsec(或者我认为具有Applicative实例的任何东西),只需要pure x <* y就可以使x <$ y之类的内容更短一些。

我现在想知道的是,是否有任何具体原因导致缺少像($>) = flip (<$) :: Functor f => f a -> b -> f b这样的运算符,这样我就能以整洁的形式表达我的解析器x *> pure y x $> y

我知道我总是可以自己定义$>,但既然<**>同时存在双重/相反/'翻转的东西'的概念在haskell中显得非常普遍,我认为它应该与<$一起出现在标准库中。

1 个答案:

答案 0 :(得分:3)

首先,一个微不足道的观点,你的意思是Functor f => f a -> b -> f b

其次,您转到FP Complete's Hoogle,输入所需的类型签名,然后discover that it is in the comonad and semigroupoids packages

但是,我无法告诉你,为什么它不在任何更常见的包中。它似乎是包含在更标准位置的合理候选者,例如Control.Applicative