Haskell程式:建立無引數但返回值的函式
我們將學習如何使用使用者定義函式建立無引數但返回值的函式。在本文中,定義的使用者定義函式包含函式定義以及一些返回值,並且在呼叫時不向其傳遞任何引數。
在所有示例中,我們將定義使用者定義函式來執行某些任務,這些任務將返回一些值,但在呼叫時不傳遞引數,例如階乘、攝氏度轉換為華氏度、圓的面積和其他函式。
演算法
步驟1 - 透過編寫帶有返回值的函式定義來定義使用者定義函式。
步驟2 - 程式執行將從main函式開始。main()函式控制整個程式。它被寫成main = do。在main函式中,使用者定義函式被呼叫,並且不向其傳遞任何引數。
步驟3 - 在函式被呼叫後,結果被列印到控制檯。
示例1
在此示例中,函式factorial接受一個整數作為引數,並使用IO monad中的putStrLn函式將引數的階乘列印到控制檯。
factorial :: Int -> Int factorial 0 = 1 factorial n = n * factorial (n - 1) main :: IO () main = do putStrLn "Factorial of a number:" let num = 5 let result = factorial num putStrLn (show result)
輸出
Factorial of a number: 120
示例2
在此示例中,函式celsiusToFahrenheit接受一個整數作為引數,並使用IO monad中的putStrLn函式將引數的攝氏度轉換為華氏度的值列印到控制檯。
celsiusToFahrenheit :: Float -> Float celsiusToFahrenheit c = (9/5) * c + 32 main :: IO () main = do putStrLn "Temperature conversion:" let celsius = 37.0 let fahrenheit = celsiusToFahrenheit celsius putStrLn (show celsius ++ "°C is equivalent to " ++ show fahrenheit ++ "°F")
輸出
Temperature conversion: 37.0°C is equivalent to 98.6°F
示例3
在此示例中,函式circleArea接受一個整數作為半徑引數,並使用IO monad中的putStrLn函式列印使用半徑作為引數的圓的面積到控制檯。
circleArea :: Float -> Float circleArea r = pi * r * r main :: IO () main = do putStrLn "Area of a circle:" let radius = 5.0 let area = circleArea radius putStrLn (show area)
輸出
Area of a circle: 78.53982
示例4
在此示例中,函式reverseString接受一個字串作為引數,並使用IO monad中的putStrLn函式列印字串及其反轉(使用字串作為引數)到控制檯。
reverseString :: String -> String reverseString str = reverse str main :: IO () main = do putStrLn "Reversing a string:" let original = "Hello, world!" let reversed = reverseString original putStrLn (original ++ " reversed is " ++ reversed)
輸出
Reversing a string: Hello, world! reversed is !dlrow ,olleH
示例5
在此示例中,函式isEven接受一個整數作為引數,檢查它是否為偶數,並使用IO monad中的putStrLn函式將結果列印到控制檯。
isEven :: Int -> Bool isEven n = n `mod` 2 == 0 main :: IO () main = do putStrLn "Checking if a number is even:" let number = 4 let result = isEven number putStrLn (show number ++ " is " ++ (if result then "even" else "odd"))
輸出
Checking if a number is even: 4 is even
示例6
在此示例中,函式maxOfTwoNumbers接受兩個整數作為引數,比較它們,並使用IO monad中的putStrLn函式將兩個數字中的最大值列印到控制檯。
maxOfTwoNumbers :: Int -> Int -> Int maxOfTwoNumbers x y = if x > y then x else y main :: IO () main = do putStrLn "Maximum of two numbers:" let x = 3 let y = 7 let max = maxOfTwoNumbers x y putStrLn (show x ++ " and " ++ show y ++ ": " ++ show max)
輸出
Maximum of two numbers: 3 and 7: 7
結論
在Haskell中,使用者定義函式是由程式設計師建立的用於執行特定操作的函式。使用者可以根據需要定義函式,即使不傳遞任何引數並在函式定義中返回一些值。在Haskell中,無引數但有返回值的使用者定義函式是一個不接受任何輸入,而是將其輸出作為返回值的函式。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP