例如:
intersectBy : (a -> a -> Bool) -> List a -> List a -> List a
intersectBy _ [] _ = []
intersectBy _ _ [] = []
intersectBy eq xs ys = [x | x <- xs, any (eq x) ys]
[]
Haskell 中似乎使用了额外的模式,Data.List
但那是一种什么样的优化?这里和伊德里斯有什么不同?
我之所以问,是因为我听说“这会使推理变得更加困难”,并且说我的人没有时间充分解释它。
我怀疑我是否能理解它对功能的“减少证明”。
有人可以从 Haskell 和 Idris 的立场向我解释这里额外模式的政治,以便我能够理解并看到差异。