【发布时间】:2016-11-27 20:33:32
【问题描述】:
我正在学习 Haskell。这是一个简单的示例,但我想了解为什么我不能在以下示例中使用 lambda 函数内部的模式匹配的概念(即,为什么 filterfold' 函数运行但 filterfold' 给出运行时错误):
-- Runs
filterfold' :: (a -> Bool) -> [a] -> [a]
filterfold' p zs = foldr (\y zs -> if (p y) then y:zs else zs) [] zs
-- Runtime error: Non-exhaustive patterns in lambda
filterfold :: (a -> Bool) -> [a] -> [a]
filterfold p (z:zs) = foldr (\y (z:zs) -> if (p y) then y:(z:zs) else (z:zs)) [] (z:zs)
【问题讨论】:
标签: haskell lambda pattern-matching