Haskell 中的无限循环?
我认为这会产生一个阶乘函数...
(在 ghci 内)
Prelude> let ft 0 = 1
Prelude> let ft n = n * ft (n - 1)
Prelude> ft 5
(无限期挂起,直到 ^C)。
I thought this would produce a factorial function...
(within ghci)
Prelude> let ft 0 = 1
Prelude> let ft n = n * ft (n - 1)
Prelude> ft 5
(hangs indefinitely, until ^C).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
两个单独的
let
语句相互独立地解释。首先定义函数ft 0 = 1
,然后定义新函数ft n = n * ft (n - 1)
,覆盖第一个定义。要定义具有两种情况的函数,您必须将两种情况放入单个
let
语句中。要在 GHCI 提示符下在一行中执行此操作,您可以通过;
分隔两种情况:The two separate
let
statements are interpreted independently from each other. First a functionft 0 = 1
is defined, and then a new functionft n = n * ft (n - 1)
is defined, overwriting the first definition.To define one function with two cases you have to put both cases into a single
let
statement. To do this in a single line at the GHCI prompt you can separate the two cases by;
: