Haskell 程序从函数返回数组
本文将帮助我们了解如何使用用户定义函数以及列表推导和递归从 haskell 中的函数返回数组。在第一个示例中,我们将使用 (show (getArray)) 函数,在第二个示例中,我们将使用 (getArray n = [x | x <- [1..n]])。在第三个示例中,我们将使用带有基本递归和递归情况的递归。
方法 1:从用户定义函数返回一个数组
在此方法中,定义用户定义函数,该函数将包含函数定义,并在调用函数后返回一个数组。
算法
步骤 1 - 通过编写其定义来定义用户定义函数,该函数将在计算后返回一个数组。
步骤 2 - 程序执行将从主函数开始。main() 函数完全控制程序。它写为 main = do。在主函数中,调用用户定义的函数。
步骤 3 - 调用函数后,结果数组将打印到控制台。
示例
在此示例中,getArray 是一个返回整数列表 [1, 2, 3, 4, 5] 的函数。主函数调用 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]。主函数调用 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 的每个元素的结果。主函数调用 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,在这种情况下函数返回一个空列表 []。主函数调用 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 是数组中元素的类型。