Haskell程式從函式中返回陣列


本文將幫助我們學習如何在 Haskell 中使用使用者定義函式、列表推導式和遞迴從函式中返回陣列。在第一個示例中,我們將使用 (show (getArray)) 函式,在第二個示例中,我們將使用 (getArray n = [x | x <- [1..n]])。在第三個示例中,我們將使用帶有基本情況和遞迴情況的遞迴。

方法 1:從使用者定義函式返回陣列

在此方法中,定義了使用者定義函式,其中包含函式定義,並在呼叫函式後返回陣列。

演算法

  • 步驟 1 − 透過編寫其定義來定義使用者定義函式,該定義將在計算後返回陣列。

  • 步驟 2 − 程式執行將從主函式開始。main() 函式控制整個程式。它被寫成 main = do。在主函式中,呼叫了使用者定義函式。

  • 步驟 3 − 呼叫函式後,將結果陣列列印到控制檯。

示例

在此示例中,getArray 是一個返回整數列表 [1, 2, 3, 4, 5] 的函式。main 函式呼叫 getArray 並將結果列印到控制檯。

getArray :: [Int]
getArray = [1, 2, 3, 4, 5]

main :: IO ()
main = do
   putStrLn (show (getArray))

輸出

[1,2,3,4,5]

方法 2:使用列表推導式從使用者定義函式返回陣列

在此方法中,定義了使用者定義函式,其中包含函式定義,並在呼叫函式後使用列表推導式返回陣列。

演算法

  • 步驟 1 − 透過編寫其定義來定義使用者定義函式,該定義將在計算後返回陣列。要返回陣列,使用列表推導式。

  • 步驟 2 − 程式執行將從主函式開始。main() 函式控制整個程式。它被寫成 main = do。在主函式中,呼叫了使用者定義函式。

  • 步驟 3 − 呼叫函式後,將結果陣列列印到控制檯。

示例 1

在此示例中,getArray 以整數 n 作為輸入,並返回整數列表 [1..n]。main 函式呼叫 getArray 5 並將結果列印到控制檯。

getArray :: Int -> [Int]
getArray n = [x | x <- [1..n]]

main :: IO ()
main = do
   putStrLn (show (getArray 5))

輸出

[1,2,3,4,5]

示例 2

在此示例中,getArray 以函式 f 和列表 xs 作為輸入,並返回一個新列表,該列表是將 f 應用於 xs 的每個元素的結果。main 函式呼叫 getArray (*2) [1, 2, 3, 4, 5],它將函式 (*2) 應用於列表 [1, 2, 3, 4, 5] 的每個元素,並將結果列印到控制檯。

getArray :: (Int -> Int) -> [Int] -> [Int]
getArray f xs = map f xs

main :: IO ()
main = do
   putStrLn (show (getArray (*2) [1, 2, 3, 4, 5]))

輸出

[2,4,6,8,10]

方法 3:使用遞迴函式從使用者定義函式返回陣列

在此方法中,定義了使用者定義函式,其中包含函式定義,並在呼叫函式後使用遞迴函式返回陣列。

演算法

  • 步驟 1 − 透過編寫其定義來定義使用者定義函式,該定義將在計算後返回陣列。要返回陣列,使用遞迴函式。

  • 步驟 2 − 程式執行將從主函式開始。main() 函式控制整個程式。它被寫成 main = do。在主函式中,呼叫了使用者定義函式。

  • 步驟 3 − 呼叫函式後,將結果陣列列印到控制檯。

示例

在此示例中,getArray 以整數 n 作為輸入,並返回整數列表 [n, n-1, ..., 1]。該函式使用遞迴來構建列表。基本情況是當 n 為 0 時,在這種情況下,函式返回一個空列表 []。main 函式呼叫 getArray 5 並將結果列印到控制檯。

getArray :: Int -> [Int]
getArray 0 = []
getArray n = n : getArray (n - 1)

main :: IO ()
main = do
   putStrLn (show (getArray 5))

輸出

[5,4,3,2,1]

結論

在 Haskell 中,陣列是相同型別值的集合,儲存在連續的記憶體位置中。陣列可以被認為是值的序列,其中每個值都與一個索引相關聯。Haskell 中的陣列使用 [a] 型別表示,其中 a 是陣列中元素的型別。

更新於: 2023年3月1日

432 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.