Я запустил 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)
, но я даже не знаю, как это оценить? - игнорировать Хлинта в этом конкретном случае.?