Haskell程序获取用户输入
在本教程中,我们将讨论编写一个在Haskell编程语言中从用户获取输入的程序。Haskell是一种声明式、强类型和函数式编程语言。Haskell中的计算是数学函数。
在本教程中,我们将讨论两种在Haskell中获取用户输入的方法。
使用getLine方法获取用户输入。
使用getChar方法获取用户输入。
由于Haskell是一种纯函数式语言。纯函数是指对于相同的参数返回相同输出的函数。获取用户输入会将程序的性质变为不纯。Haskell引入了IO类型来区分不纯函数和纯函数。带有IO类型的函数声明表明它是不纯函数,它与外部世界交互。“()”是IO操作的参数,描述了IO函数的返回值。
示例
以下函数
fun1 :: IO (), returns empty tuple. (return statement is not necessary for empty tuple). fun1 :: IO (Int), returns a tuple with a single integer. (return statement is necessary).
语法
由于获取用户输入是一个输入/输出操作。如果声明了带有IO操作的函数,则必须使用IO ()语法声明。
function_name :: IO ()
如果IO函数中有多个语句,则函数必须使用do关键字来顺序执行IO操作。
function_name = do statement1… statement2..
注意− 每个IO函数都必须有一个return语句或一个返回IO操作的IO操作。
Print/putStr/putChar必须在没有return语句的IO函数中使用。
算法步骤
使用合适的IO函数从用户处获取输入。
将输入值加载到变量中。
打印用户输入。
使用Getline方法获取用户输入
示例
使用getLine方法获取用户输入的程序
main :: IO() main = do print("Please enter the input value/string here") -- initializing variable with output from getLine function line <- getLine print ("The user input is:") print (line)
输入
"Please enter the input value/string here" Hi Let's play a game
输出
"The user input is:" "Hi Let's play a game"
在上面的程序中,我们使用IO ()类型声明了main函数以使用IO操作。我们调用了getLine函数,该函数获取字符串用户输入。我们使用“<-”语法将getLine函数的值加载到变量Line中,以加载来自IO函数的返回值。最后,我们打印了变量line。
注意− 我们不能打印IO函数。例如,我们不能打印函数中getLine函数的值,只能通过关键字“<-”访问。
使用Getchar函数获取用户输入的首字母
示例
使用getChar函数获取用户输入首字母的程序
main :: IO() main = do -- initializing variable with output from getChar function ch <- getChar print ("The user input is:") print (ch)
输入
TutorialsPoint
输出
"The user input is:" 'T'
在上面的程序中,我们使用IO ()类型声明了main函数以使用IO操作。我们调用了getChar函数,该函数获取字符作为用户输入。我们使用“<-”语法将getChar函数的值加载到变量ch中,以加载来自IO函数的返回值。最后,我们打印了变量line。
获取多个字符串作为用户输入并将其作为列表打印
示例
获取多个字符串作为用户输入并将其作为列表打印的程序
inputStrings :: [String] -> IO() inputStrings xs = do -- getting user input print("Enter another string or type exit to get the list") input <- getLine if (input == "exit") then do print "The user inputted list:" (print (init xs)) else (inputStrings (input:xs)) main :: IO () main = do -- initializing list with an initial value let list=["initial"] -- invoking inputStrings functions inputStrings list
输入
"Enter another string or type exit to get the list" Hi "Enter another string or type exit to get the list" Hello "Enter another string or type exit to get the list" How "Enter another string or type exit to get the list" exit
输出
"The user inputted list:" ["How","Hello","Hi"]
在上面的程序中,我们声明了函数inputStrings,该函数获取字符串列表作为用户输入并返回IO操作。在函数定义中,它接受列表xs作为参数。我们使用do关键字来使用IO操作。我们调用了getLine,它获取字符串作为用户输入。我们将getLine函数返回的值加载到变量input中。我们使用if关键字检查输入是否等于字符串“exit”。如果输入等于字符串“exit”,我们使用init函数打印列表的初始部分。否则,我们将递归调用该函数inputStrings,其参数为input与列表xs连接。即此函数将字符串加载到列表中,直到用户输入不等于“exit”。
结论
在本教程中,我们讨论了两种在Haskell编程语言中获取用户输入的方法。