gpt4 book ai didi

Haskell,不知道为什么输入 ‘if’ * 出现*解析错误

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

这是获取一个数字,获取其阶乘并将其加倍,但是由于基本情况,如果您输入 0,它会给出 2 作为答案,因此为了绕过它,我使用了 if 语句,但收到错误输入“if”时解析错误。如果你们能提供帮助,我真的很感激:)

fact :: Int -> Int
fact 0 = 1
fact n = n * fact(n-1)

doub :: Int -> Int
doub r = 2 * r

factorialDouble :: IO()
factorialDouble = do
putStr "Enter a Value: "
x <- getLine
let num = (read x) :: Int
if (num == 0) then error "factorial of zero is 0"
else let y = doub (fact num)
putStrLn ("the double of factorial of " ++ x ++ " is " ++ (show y))

最佳答案

我发现了两个问题应该解决这个问题

  1. 您有一个没有延续的 let:(否则让 y = doub (fact num) ...)。由于您不在 do 内,因此您可能希望将其更改为 let ... in 语句。
  2. 您的 if 缩进太深。它应该位于 let 下方。

我已经更正了我提到的内容,并且代码对我有用......

fact :: Int -> Int
fact 0 = 1
fact n = n * fact(n-1)

doub :: Int -> Int
doub r = 2 * r

factorialDouble :: IO ()
factorialDouble = do
putStr "Enter a Value: "
x <- getLine
let num = (read x) :: Int
if num == 0 then (error "factorial of zero is 0")
else let y = doub (fact num)
in putStrLn ("the double of factorial of " ++ x ++ " is " ++ (show y))

关于Haskell,不知道为什么输入 ‘if’ * 出现*解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26880932/

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