我想使用lambda创建一个函数,它获取参数列表中的对并返回第一个列表的第一个元素列表。例如:使用lambda实现Haskell中的列表函数
function [ (1,2), (3,4) (5,6) ] = [1,3,5]
我使用lambda这样,但它似乎并没有工作:
firstall [] = []
firstall ((a,b) : xs) = (\(a,b) -> a : firstall(xs))
也许我这样做完全错误的。有人能帮我吗?现在
firstall ((a,b) : xs) = ((\(a,b) -> a) (a,b) : firstall(xs))
,因为你在你的lambda表达式使用a
和b
为好,这样的要价:
你应该*总是*使用类型签名,特别是当你正在学习。如果你有,你会意识到你的代码创建了一个函数列表。 Haskell的类型系统功能强大且有用;用它!在你的情况下,你想'firstall :: [(a,b)] - > [a]'。看看添加时会发生什么。 – crockeea
你想要的是'map fst'。 –