Haskell 程式將列表轉換為對映
在 Haskell 中,我們將使用 fromList 和 foldl 函式將列表轉換為對映。這也可以使用遞迴和模式匹配來完成。在第一個示例中,我們將使用 (listToMap xs = Map.fromList xs) 函式,在第二個示例中,我們將使用 (listToMap xs = List.foldl' (\acc (k, v) -> Map.insert k v acc) Map.empty xs) 函式。在第三個示例中,我們將使用遞迴函式的基本情況和遞迴情況。
演算法
步驟 1 − 匯入限定的 Data.Map 模組。
步驟 2 − 使用 fromList 函式定義 listToMap 函式
步驟 3 − 程式執行將從 main 函式開始。main() 函式控制整個程式。它寫成 main = do。
步驟 4 − 定義變數“myList”,它將儲存要轉換為對映的列表值。
步驟 5 − 一旦函式被呼叫,相應的對映值將被列印到控制檯。
示例 1
在此示例中,列表使用 fromList 函式轉換為對映。
import qualified Data.Map as Map listToMap :: Ord k => [(k, v)] -> Map.Map k v listToMap xs = Map.fromList xs main :: IO () main = do let myList = [("apple", 1), ("banana", 2), ("orange", 3)] let myMap = listToMap myList print myMap
輸出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... fromList [("apple",1),("banana",2),("orange",3)]
示例 2
在此示例中,列表使用 foldl 函式轉換為對映。
import qualified Data.List as List import qualified Data.Map as Map listToMap :: Ord k => [(k, v)] -> Map.Map k v listToMap xs = List.foldl' (\acc (k, v) -> Map.insert k v acc) Map.empty xs main :: IO () main = do let myList = [("apple", 1), ("banana", 2), ("orange", 3)] let myMap = listToMap myList print myMap
輸出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... fromList [("apple",1),("banana",2),("orange",3)]
示例 3
在此示例中,列表使用遞迴和模式匹配轉換為對映。
import qualified Data.Map as Map listToMap :: Ord k => [(k, v)] -> Map.Map k v listToMap [] = Map.empty listToMap ((k, v):xs) = Map.insert k v (listToMap xs) main :: IO () main = do let myList = [("apple", 1), ("banana", 2), ("orange", 3)] let myMap = listToMap myList print myMap
輸出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... fromList [("apple",1),("banana",2),("orange",3)]
結論
在 Haskell 中,列表可以轉換為 Map 資料結構,其中列表中的每個元素都被視為鍵值對。Map 資料結構在 Data.Map 模組中定義,它是一個儲存鍵值對集合的容器。要將列表轉換為 Map,我們可以使用 Data.Map 模組提供的 fromList 函式。fromList 函式接受鍵值對列表並返回一個 Map,該 Map 將每個鍵對映到其對應值。我們還可以使用 foldl 函式以及遞迴和模式匹配進行轉換。
廣告