试图在Haskell中创建一个简单的数学方程式

Asa*_*saf 1 haskell

我正在尝试创建一个简单的函数,从用户(x,y)获取2个变量
进行计算,然后将其打印出来.
由于某种原因没有成功:

main = do
    putStrLn "Insert Number1"
    x <- readLn
    putStrLn "Insert Number2"
    y <- readLn
    z = (x * y * 0.01)
    putStrLn "Result: " ++z
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

test.hs:6:11: parse error on input `='
Run Code Online (Sandbox Code Playgroud)

Dan*_*ner 9

使用let绑定新的变量.最后一行也有一些错误:首先,你必须明确地在Double和之间转换String(例如,使用show),其次,你需要记住优先级.在Haskell中,函数应用程序比记录更新之外的任何东西都更紧密,所以你写的解析为(putStrLn "Result: ") ++ z,这实际上没有意义.修好了这些东西:

main = do
    putStrLn "Insert Number1"
    x <- readLn
    putStrLn "Insert Number2"
    y <- readLn
    let z = x * y * 0.01
    putStrLn ("Result: " ++ show z)
Run Code Online (Sandbox Code Playgroud)

  • 一个非常酷的东西,haskell编译器可以通过类型`0.01`和函数`(*)`来推断出`x`和`y`的类型.否则你必须用`x < - readLn :: IO Double`和`y < - readLn :: Io Double指定它 (2认同)