我試圖通過串列理解在haskell的元組串列中提取一個元組的第一個元素,但不知何故它只是輸出第一個然后停止,所以我決定通過遞回來做到這一點,看起來像這樣:
tuples :: (Ord a, Ord b) => [(a, b)] -> [a]
tuples [] = []
tuples ((x,y):xs) = x : tuples xs
現在,雖然這可行,但我想知道如何通過串列理解來做同樣的事情。
提前致謝!
uj5u.com熱心網友回復:
是的,您可以在串列推導中使用模式匹配,其中:
tuples :: [(a, b)] -> [a]
tuples xs = [ x | (x, _) <- xs ]
但可能最簡單的方法就是使用fst :: (a, b) -> a
:
tuples :: [(a, b)] -> [a]
tuples = map fst
的型別約束不是(Ord a, Ord b)
必需的:我們在任何地方都沒有使用為屬于型別類成員的型別定義的函式。Ord
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/479678.html
上一篇:Angular13ReactiveFormValidationParserError:Unexpectedtoken[,expectedidentifierorkeyword