Haskell 程式將列表轉換為集合


Haskell 程式設計具有 fromList、Set.fromList 和 foldr 等內部函式,可用於將列表轉換為集合。在第一個示例中,我們將使用 (listToSet = Set.fromList) 函式,在第二個示例中,我們將直接從 main 函式呼叫 (set = Set.fromList xs) 函式。而在第三個示例中,我們將使用 (listToSet = foldr Set.insert Set.empty) 函式。

演算法

  • 步驟 1 - 匯入限定的 Data.Set 模組。

  • 步驟 2 - 使用 fromList 函式定義 listToSet 函式,如下所示:

    listToSet = Set.fromList。

  • 步驟 3 - 程式執行將從 main 函式開始。main() 函式控制整個程式。它寫成 main = do。

  • 步驟 4 - 定義變數 'xs',它將儲存要轉換為集合的列表值。

  • 步驟 5 - 呼叫函式後,將對應於列表值的最終集合值列印到控制檯。

示例 1

在此示例中,使用 fromList 函式將列表轉換為集合。

import qualified Data.Set as Set

listToSet :: Ord a => [a] -> Set.Set a
listToSet = Set.fromList

main :: IO ()
main = do
  let xs = [1, 2, 3, 2, 1, 4]
      set = listToSet xs
  putStrLn $ "List: " ++ show xs
  putStrLn $ "Set: " ++ show (Set.toList set)

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
List: [1,2,3,2,1,4]
Set: [1,2,3,4]

示例 2

在此示例中,使用 main 函式中的 fromList 函式將列表轉換為集合。

import qualified Data.Set as Set

main :: IO ()
main = do
  let xs = [1, 2, 3, 2, 1, 4]
      set = Set.fromList xs
  putStrLn $ "List: " ++ show xs
  putStrLn $ "Set: " ++ show (Set.toList set)

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
List: [1,2,3,2,1,4]
Set: [1,2,3,4]

示例 3

在此示例中,使用使用者定義函式使用 fromList 函式將列表轉換為集合。

import qualified Data.Set as Set

listToSet :: Ord a => [a] -> Set.Set a
listToSet xs = Set.fromList [x | x <- xs]

main :: IO ()
main = do
  let xs = [1, 2, 3, 2, 1, 4]
      set = listToSet xs
  putStrLn $ "List: " ++ show xs
  putStrLn $ "Set: " ++ show (Set.toList set)

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
List: [1,2,3,2,1,4]
Set: [1,2,3,4]

示例 4

在此示例中,使用 foldr 函式將列表轉換為集合。

import qualified Data.Set as Set

listToSet :: Ord a => [a] -> Set.Set a
listToSet = foldr Set.insert Set.empty

main :: IO ()
main = do
  let xs = [1, 2, 3, 2, 1, 4]
      set = listToSet xs
  putStrLn $ "List: " ++ show xs
  putStrLn $ "Set: " ++ show (Set.toList set)

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
List: [1,2,3,2,1,4]
Set: [1,2,3,4]

結論

在 Haskell 中,列表是有序的相同型別元素的集合,而集合是相同型別不同元素的無序集合。將列表轉換為集合的過程包括刪除任何重複項並對剩餘元素進行排序。Haskell 提供了 Data.Set 模組,該模組定義了 Set 型別和用於處理集合的多個函式。要將列表轉換為集合,我們通常使用 Data.Set 模組中的 fromList 函式。我們也可以使用 foldr 函式進行此轉換。

更新於: 2023年3月28日

527 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.