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程式語言中獲取使用者輸入的方法。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP