我找到了以下
的定义(%) = flip fmap
我可以编写如下代码:
readFile "/etc/passwd" % lines % filter (not . null)
对我来说,它比替代更有意义
filter (not . null) <$> lines <$> readFile "/etc/passwd"
显然这只是一个秩序问题,是否有其他人这样做?是否有正当理由不写这样的代码?
答案 0 :(得分:8)
答案 1 :(得分:5)
Applicative
类型类似<**>
的类似函数;想要或使用Functor也是一件非常合理的事情。遗憾的是,<**>
的语义略有不同,因此无法直接扩展以适用于Functor
。
答案 2 :(得分:4)
-- (.) is to (<$>) as flip (.) is to your (%).
我通常定义(&amp;)= flip(。),就像你的例子一样,你可以应用函数组合后缀。在我看来,可以更容易理解无点代码。
答案 3 :(得分:2)
我个人不会使用这样的操作符,因为那时我必须学习两个读取程序的命令。
答案 4 :(得分:1)
(<&>) :: Functor f => f a -> (a -> b) -> f b
现在可以从Data.Functor
中的base
中获得。
https://hackage.haskell.org/package/base-4.12.0.0/docs/Data-Functor.html#v:-60--38--62-