您好,我只想问如何在 Haskell 中创建矩形区域。这是我的代码
main = do
putStrLn"Enter base"
base <- getLine
putStrLn"Enter height"
height <- getLine
putStrLn("The area is: " ++ (height * base) /2)
错误在语句中:
putStrLn("The area is : " ++(height *base) /2)
您好,我只想问如何在 Haskell 中创建矩形区域。这是我的代码
main = do
putStrLn"Enter base"
base <- getLine
putStrLn"Enter height"
height <- getLine
putStrLn("The area is: " ++ (height * base) /2)
错误在语句中:
putStrLn("The area is : " ++(height *base) /2)
首先,您应该在 a 之后缩进do,并在函数及其参数之间使用空格。
main = do
putStrLn "Enter base"
base <- getLine
putStrLn "Enter height"
height <- getLine
putStrLn ("The area is: " ++ show ((read height * read base) /2))
主要问题是在 Haskell 中,数据不会在类型之间自动转换,因此您不能对字符串进行数值运算,并且必须明确说明您想要什么。
(这种类型的编译时检查消除了大量的错误来源——最好尽早发现问题,即使一开始看起来很挑剔。)
我们需要对readString做一个数字,然后show把结果转回String,所以这就是我们需要的原因show ((read height * read base) /2)
顺便说一句,这似乎是在计算三角形而不是矩形的面积!
如果您将主要功能 - 三角形计算 - 与 IO 分开,您的代码会更好,所以编写
triangle base height = height * base / 2
main = do
putStrLn "Enter base"
base <- readLn -- readLn is handy
putStrLn "Enter height"
height <- readLn
putStr "The area is: "
print (triangle base height) -- print is also handy
readLngetLine然后使用结果read。
print做show然后putStrLn。
我用putStrwhich 不开始换行来使用更少的括号!