我想使用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'。 –