HLint:使用&&&建议

时间:2014-03-25 09:26:17

标签: haskell arrows hlint

我在一个小项目上运行了 HLint ,它建议我使用&&&。

示例:

>>> cat st.hs
f = (+) 10
g = (+) 1

main = print $ (\x -> (f x, g x)) 5
>>> hlint st.hs
st.hs:4:17: Warning: Use &&&
Found:
  \ x -> (f x, g x)
Why not:
  f Control.Arrow.&&& g

1 suggestion

我理解\x -> (f x, g x)是一种模式并且很欣赏这个建议。但是,Control.Arrow.&&&没有正常的功能而是箭头,所以我不能按照建议使用&&&

那么在那种情况下推荐的方式是什么?

  • 在函数上定义我自己的&&&运算符?
  • 使用箭头并执行(arr f) &&& (arr g)之类的操作,但我甚至不知道如何评估它?
  • 在特定场合忽略 Hlint 。?

1 个答案:

答案 0 :(得分:15)

箭头是一个类型类,其中(->)是一个实例(请参阅“实例”下的here,以及实现的here)。这意味着可以直接使用带有函数的(&&&)等箭头运算符。