我在 Haskell 中有以下功能
agreeLen :: (Eq a) => [a] -> [a] -> Int
agreeLen x y = length $ takeWhile (\(a,b) -> a == b) (zip x y)
我正在尝试学习如何编写“惯用的”Haskell,它似乎更喜欢使用.
and$
而不是括号,并且在可能的情况下也更喜欢无点代码。我似乎无法摆脱提及x
和y
明确。有任何想法吗?
我认为我会遇到同样的问题,即对两个参数的任何函数进行点释放。
BTW,这只是为了写好代码;不是一些“尽一切可能使它变得毫无意义”的家庭作业。
谢谢。
(添加评论)感谢您的回答。你已经说服我这个功能不会从 pointfree 中受益。你还给了我一些练习转换表达式的好例子。这对我来说仍然很困难,而且它们对 Haskell 来说似乎就像指针对 C 一样重要。