gpt4 book ai didi

Haskell基本阶乘不退出?

转载 作者:行者123 更新时间:2023-12-04 04:47:52 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Infinite loop in haskell? (newbie)

(1 个回答)


9年前关闭。




我正在学习 Haskell,并且在使用 this tutorial 的基本阶乘函数时遇到了问题。 .

基本上,我已经定义了一个阶乘:

Prelude> let factorial 0 = 1
Prelude> let factorial n = n * factorial (n - 1)

类型检查:
Prelude> :t factorial
factorial :: Num a => a -> a

这是有道理的。但是,此函数的行为不会。结果是 (interactive): out of memory不管输入是什么。
Prelude> factorial 5
(interactive): out of memory

我不得不假设这是一个导致内存不足错误的无限递归调用,但我不确定是什么可能导致它。 factorial 0 也会发生同样的事情。 ,即使我已明确声明这是 1:
Prelude> factorial 0
(interactive): out of memory

现在,这是奇怪的部分:如果我在文件中定义阶乘函数,它工作正常。我创建一个文件 tesths.hs英石。:
factorial 0 = 1
factorial n = n * factorial (n - 1)

然后,如果我回到 GHCI 并运行 :l tesths.hs ,我可以执行 factorial 5没有错误。

这里发生了什么?

最佳答案

定义了两个函数,而不是一个具有两种情况的函数。尝试首次运行 :set -Wall 的相同命令,你应该得到一个名字阴影警告。要解决问题,请尝试

let factorial 0 = 1; factorial n = n * factorial (n - 1)

反而。

关于Haskell基本阶乘不退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15978118/

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