使用循环显示字母 (A-Z) 的 Haskell 程序
本教程将讨论编写一个在 Haskell 编程语言中显示 A-Z 字符的程序。Haskell 是一种函数式、声明式和强类型语言。Haskell 中的计算是数学函数。
在本教程中,我们将看到两种在 Haskell 中显示字母的方法。
一个迭代程序来显示字母。
一个递归程序来显示字母。
注意− Haskell 不支持循环,因此我们使用其他迭代和递归实现来模拟循环的功能。
算法步骤
实现打印字母的逻辑。
打印/显示字母。
使用列表推导式以迭代方式显示字母。
示例
使用列表推导式以迭代方式显示字母的程序。
import Data.Char main :: IO() main = do -- generating alphabets from A-Z as list of characters let alphabets=[chr x | x<-[65..90]] -- printing the list of Characters print ("Alphabets from A-Z are:") print alphabets
输出
"Alphabets from A-Z are:" "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
注意 - 使用空格区分字母。实际输出中字符之间没有空格。字符列表是字符串。
在上面的程序中,我们导入了 Char 模块,因为默认情况下并非所有函数都对用户可用。导入模块的语法是 import Data.MODULE_NAME。在主函数中,我们使用列表推导式生成 A-Z 的字符列表。其中,我们生成从 65 到 90 的整数。我们知道大写字母的 ASCII 值范围是 65 到 90。生成数字后,我们使用生成的数字作为参数调用 chr 函数并将它们加载到列表中。其中 chr 是 Char 模块中提供的函数,它接收一个整数(ASCII 值)作为输入,并将其转换为与该数字的 ASCII 值对应的字符。如果输入数字是 66,因为 'B' 的 ASCII 值是 66,则返回 'B'。
使用递归函数以递归方式显示字母
示例
使用递归函数以递归方式显示字母的程序。
import Data.Char import Data.Char -- function to print uppercase letters a-z -- function declaration printAlphabets :: Int -> IO() -- function definition -- base case printAlphabets 25 = do print ('Z') printAlphabets d = do putStr (show (chr (65+d)) ++ " ") printAlphabets (d+1) -- function to print lowercase letters a-z -- function declaration printAlphabets2 :: Int -> IO() -- function definition printAlphabets2 25 = do print ('z') printAlphabets2 d = do putStr (show (chr (97+d)) ++ " ") printAlphabets2 (d+1) main :: IO() main = do -- invoking printAlphabets function print ("Alphabets from A-Z are:") printAlphabets 0 print ("Alphabets from a-z are:") printAlphabets2 0
输出
"Alphabets from A-Z are:" 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z' "Alphabets from a-z are:" 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z'
在上面的程序中,我们导入了 Char 模块以获取对字符的有用函数。我们实现了 printAlphabets 函数来打印 A-Z 的大写字母。我们声明此函数,使其接收一个整数作为输入并返回 IO。在函数定义中,此函数将整数 d 作为初始偏移量。它将偏移量添加到 65,因为大写字母的 ASCII 值从 65 开始。我们使用了 Char 模块中的内置函数,该函数接收 ASCII 值并返回与该 ASCII 数字对应的字符。我们使用 show 函数打印返回的字符,该函数将字符转换为字符串,因为 putStr 函数仅打印字符串。最后,我们递归调用同一个函数,直到满足基本情况,即 d = 25。类似地,我们实现了 printAlphabets2 来打印小写字母,其中偏移量为 97,因为小写字母的 ASCII 值从 97 开始。
结论
在本教程中,我们讨论了两种不同的方法来编写一个在 Haskell 编程语言中显示字母 (A-Z) 的程序。