Haskell程式:將字串集合轉換為字串陣列


在Haskell中,我們可以使用`listArray`和`toList`函式以及列表推導式將字串集合轉換為字串陣列。在第一個示例中,我們將使用`(setToArray set = listArray (1, Set.size set) (Set.toList set))`函式;在第二個示例中,我們將直接從主函式呼叫`(setToArray set = listArray (1, Set.size set) (toList set))`函式;在第三個示例中,我們將使用`(setToArray set = array (1, Set.size set) [(i, x) | (i, x) <- zip [1..] (Set.toList set)])`函式。

演算法

  • 步驟1 − 匯入`Data.Set`和`Data.Array`模組。

  • 步驟2 − 使用`listArray`函式定義`setToArray`函式。

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

  • 步驟4 − 定義名為“set”的變數,它將儲存要轉換為陣列的字串集合。

  • 步驟5 − 呼叫函式後,將相應的字串陣列集合列印到控制檯。

示例1

在這個例子中,使用`listArray`函式將字串集合轉換為字串陣列。

import qualified Data.Set as Set
import Data.Array

setToArray :: Set.Set String -> Array Int String
setToArray set = listArray (1, Set.size set) (Set.toList set)

main :: IO ()
main = do
  let set = Set.fromList ["apple", "banana", "cherry", "banana", "apple"]
      array = setToArray set
  putStrLn $ "Set: " ++ show (Set.toList set)
  putStrLn $ "Array: " ++ show (elems array)

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
Set: ["apple","banana","cherry"]
Array: ["apple","banana","cherry"]

示例2

在這個例子中,使用`listArray`和`toList`函式將字串集合轉換為字串陣列。

import qualified Data.Set as Set
import Data.Foldable (toList)
import Data.Array (Array, listArray)

setToArray :: Set.Set String -> Array Int String
setToArray set = listArray (1, Set.size set) (toList set)

main :: IO ()
main = do
  let mySet = Set.fromList ["apple", "banana", "orange"]
      myArray = setToArray mySet
  print myArray

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
array (1,3) [(1,"apple"),(2,"banana"),(3,"orange")]

示例3

在這個例子中,使用列表推導式將字串集合轉換為字串陣列。

import qualified Data.Set as Set
import Data.Array

setToArray :: Set.Set String -> Array Int String
setToArray set = array (1, Set.size set) [(i, x) | (i, x) <- zip [1..] (Set.toList set)]

main :: IO ()
main = do
  let mySet = Set.fromList ["apple", "banana", "orange"]
      myArray = setToArray mySet
  print myArray

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
array (1,3) [(1,"apple"),(2,"banana"),(3,"orange")]

結論

在Haskell中,集合是一種表示無序的、互異值集合的資料結構。字串集合是一個只包含字串值的集合。陣列是另一種表示有序值集合的資料結構。字串陣列是一個只包含字串值的陣列。在Haskell中,有多種方法可以將字串集合轉換為字串陣列,包括使用`Data.Set`和`Data.Array`模組、列表推導式以及其他庫,例如`vector`。

更新於:2023年3月28日

瀏覽量:178

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.