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 函式以及遞迴和模式匹配進行轉換。

更新於: 2023年3月28日

532 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告