简体   繁体   English

Haskell:是否有这样的运算符:(<$$>):: Functor f => fa->(a-> b)-> fb

[英]Haskell: Is there an operator like this: (<$$>) :: Functor f => f a -> (a -> b) -> f b

Finding out that map and flat map in Haskell could be performed the this way, 可以通过这种方式找出Haskell中的地图和平面地图,

xs >>= f          ≃ flatMap f xs
xs >>= return . f ≃ map f xs

I thought it would be convenient if we have such an operator 我以为如果有这样的操作员会很方便

(<$$>) :: Functor f => f a -> (a -> b) -> f b
f <$$> fn = fn <$> f

so that map could be expressed more tidily: 这样可以更整洁地表达地图:

xs >>=  f ≃ flatMap f xs
xs <$$> f ≃ map f xs

Does such an operator exist in Haskell's standard library? Haskell的标准库中是否存在这样的运算符?

It's not anywhere in the base package. 它不在base软件包中的任何位置。 The most commonly used library that exports this function is lens , as <&> . 导出此功能的最常用的库是lens<&>

Note also that, as often to flip arguments, operator sections may be "enough" and may perhaps preserve readability by limiting the introduction of new operators: 还请注意,经常翻转参数时,运算符部分可能“足够”,并且可能会通过限制引入新的运算符来保持可读性:

> :{
| (<$> Just 0) $ \x ->
|   x + 1 + 1 + 1
|     + 1 + 1 + 1
|     + 1 + 1 + 1
|     + 1 + 1 + 1
| :}
Just 12

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ((fa)b)与Haskell中的(fab)相同吗? - Is ((f a) b) the same as (f a b) in Haskell? Functor用于(a - &gt; b) - &gt;(fa - &gt; fb),什么是(类别c)=&gt; cab - &gt; c(fa)(fb)? - Functor is for (a -> b) -> (f a -> f b), what is for (Category c) => c a b -> c (f a) (f b)? (&lt;*&gt;):: f(a-&gt; b)-&gt; fa-&gt; fb在Functor类中到底做了什么 - what does (<*>) :: f (a -> b) -> f a -> f b exactly do in the Functor class F#中的Haskell应用函子 - Haskell Applicative Functor in F# bi fab的通用变体=(fa,fb) - Generic variant of bi f a b = (f a, f b) 为什么类型f(fbc)(f(fab)(fac))不匹配(。)? - Why doesn't the type f (f b c) (f (f a b) (f a c)) match (.)? Haskell 中的“f (a -&gt; b)”类型签名是什么意思? - What does “f (a -> b)” type signature mean in Haskell? 如果f是a-&gt; b类型的函数,则(fmap f)与(f。)相同吗? - Is (fmap f) the same as (f .) if f is a function of type a->b? f, g, h :: Kleisli ((-&gt;) e) ab &lt;=&gt; f &gt;&gt;&gt; (g &amp;&amp;&amp; h) = (f &gt;&gt;&gt; g) &amp;&amp;&amp; (f &gt;&gt;&gt; h)? - f, g, h :: Kleisli ((->) e) a b <=> f >>> (g &&& h) = (f >>> g) &&& (f >>> h)? :: a - &gt;(a - &gt; b) - &gt; b运算符(Haskell) - :: a -> (a -> b) -> b operator (Haskell)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM