gpt4 book ai didi

haskell - 与预期类型不匹配

转载 作者:行者123 更新时间:2023-12-02 14:58:52 26 4
gpt4 key购买 nike

我想做一些不同的事情,但它太长了,所以下面只是示例:

test x y = if x == "5" then x
else do putStrLn "bad value"; y

所以如果 x == 5 它应该返回 x,否则它应该打印“坏值”并返回 y - 我如何在 haskell 中做到这一点?


编辑:

为什么此代码返回错误:“无法将预期类型 bool 与实际类型 IO bool 匹配”?

canTest :: String -> IO Bool
canTest x = if x == "5" then return True
else do putStrLn "bad value"; return False

test x y = if canTest x then x
else y

最佳答案

需要使两边的类型相同,即IO String。为此,您需要使用 return 将值提升到 monad 中,即

test :: String -> String -> IO String
test x y = if x == "5"
then return x
else do putStrLn "bad value"
return y

现在 return x 的类型为 IO String,else 分支中的 do block 也是如此。

关于haskell - 与预期类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6112631/

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