gpt4 book ai didi

haskell - 无法将预期类型 `IO b0' 与实际类型 `Float' 匹配

转载 作者:行者123 更新时间:2023-12-02 10:44:43 25 4
gpt4 key购买 nike

我想做一个简单的单位转换器,我写道:

value :: String -> Float

value "mg" = 0.001

value "g" = 1

value "dag" = 10
value "kg" = 1000
value "t" = 1000000

main = do
putStrLn "enter the number: "
numbr <- getLine
putStrLn "enter the unit: "
unit <- getLine
(read numbr*(value unit))

但它给了我一个错误:
jedn.hs:16:16:
Couldn't match expected type `IO b0' with actual type `Float'
In the return type of a call of `value'
In the second argument of `(*)', namely `(value unit)'
In a stmt of a 'do' block: (read numbr * (value unit))

我认为问题在于将“dag”、“kg”等值更改为实际数字,但我应该如何正确写呢?

我对 Haskell 很陌生,所以这段代码可能写错了。

最佳答案

您只需要打印结果而不是尝试返回它。

print (read numbr * value unit)

你不能归还它,原因会随着你更多地研究单子(monad)而变得更清楚。如果您想从 I/O 函数返回,请使用
return (read numbr * value unit)

关于haskell - 无法将预期类型 `IO b0' 与实际类型 `Float' 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14167560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com