我在一个小项目上运行 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。?
  • 最佳答案

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

    关于haskell - HLint : use &&& suggestion advice,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22630217/

    10-12 03:51