Haskell程序 创建无参数和无返回值的函数

Haskell程序 创建无参数和无返回值的函数

在Haskell中,我们可以通过使用用户定义的函数来创建一个没有参数和没有返回值的函数。在所有的例子中,我们将定义用户定义的函数来执行某些任务,这些任务不返回任何值,并且没有参数,如printGreeting、printMultipleLines、printSquares函数。

算法

  • 第1步 – 用户定义的函数是通过编写其定义而不返回任何值来定义的。

  • 第2步 – 程序的执行将从主函数开始。main()函数拥有整个程序的控制权。它被写成main = do。在main函数中,用户定义的函数被调用,没有传递任何参数。

  • 第3步 – 在函数被调用后,结果被打印到控制台。

例子1

在这个例子中,printGreeting是一个简单地将字符串 “Hello, there!”打印到控制台的函数。

printGreeting :: IO ()
printGreeting = putStrLn "Hello, there!"
main = do
printGreeting

输出

Hello, there!

例2

在这个例子中,printMessage使用do符号来执行两个独立的putStrLn动作,将字符串 “这是一条消息。”和 “再见!”打印到控制台。

printMessage :: IO ()
printMessage = do
   putStrLn "This is a message."
   putStrLn "Goodbye!"
main = do
printMessage

输出

This is a message.
Goodbye!

例3

在这个例子中,printMultipleLines使用mapM_函数将putStrLn函数应用于一个字符串列表,有效地将每个字符串打印在单独的一行。mapM_中的_表示该函数被用于其副作用(打印到控制台),而每个动作的结果被丢弃。

printMultipleLines :: IO ()
printMultipleLines = mapM_ putStrLn ["Line 1", "Line 2", "Line 3"]
main = do
printMultipleLines

输出

Line 1
Line 2
Line 3

例4

在这个例子中,printNumbers使用mapM_函数来打印1到5的数字。

printNumbers :: IO ()
printNumbers = mapM_ print [1..5]
main = do
printNumbers

输出

1
2
3
4
5

例5

在这个例子中,printSquares使用mapM_函数来打印1到5之间的数字的平方。(^2)函数将一个数字提高到2的幂,(print . (^2))表达式将这两个函数组合起来,依次应用它们。

printSquares :: IO ()
printSquares = mapM_ (print . (^2)) [1..5]
main = do
printSquares

输出

1
4
9
16
25

例6

在这个例子中,printSum 使用 print 函数来打印从 1 到 100 的数字之和。$运算符被用来将打印函数应用于sum函数的结果,sum函数将列表中的元素相加。

printSum :: IO ()
printSum = print $ sum [1..100]
main = do
printSum

输出

5050

例7

在这个例子中,printCountdown使用mapM_函数来打印从10到1的数字。(putStrLn . show)表达式将show函数(将一个值转换为字符串)和putStrLn函数组合在一起,有效地将数字打印为字符串。

printCountdown :: IO ()
printCountdown = mapM_ (putStrLn . show) [10, 9..1]
main = do
printCountdown

输出

10
9
8
7
6
5
4
3
2
1

例8

在这个例子中,printFibonacci 使用 mapM_ 函数来打印前 10 个 Fibonacci 数字。fib 函数计算了第 n 个斐波那契数,mapM_ 函数将 print .fib 应用于 1 到 10 的数字列表。where子句定义了fib函数,它使用一个简单的递归定义来计算序列中的每个数字。

printFibonacci :: IO ()
printFibonacci = mapM_ (print . fib) [1..10]
   where
      fib n = if n <= 1 then n else fib (n-1) + fib (n-2)
main = do
printFibonacci

输出

1
1
2
3
5
8
13
21
34
55

例9

在这个例子中,printFactorial 使用 mapM_ 函数来打印 1 到 5 之间的数字的阶乘。阶乘函数计算给定数字的阶乘,mapM_函数将打印 . 阶乘应用到数字列表中。阶乘函数被定义在where子句中。

printFactorial :: IO ()
printFactorial = mapM_ (print . factorial) [1..5]
   where
      factorial n = if n <= 1 then 1 else n * factorial (n-1)
main = do
printFactorial

输出

1
2
6
24
120

结论

在Haskell中,用户定义的函数是由程序员创建的用于执行特定操作的函数。用户可以根据自己的需要来定义函数,即使在函数定义中不传递任何参数,不返回任何值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程