如何防止 GHCI 评估无限流?
How do I prevent GHCI from evaluating an infinite stream?
有时在使用 GHCI 时我不小心尝试计算无限流(例如 [1..]
)。它一直在打印……打印……打印……打印……所以问题是停止打印的唯一方法是退出控制台,丢失我已经完成的所有内容session。有没有办法让 GHCI 默认只取列表中的前 x 项?
只需使用Ctrl+C中断进程:
Prelude > let x = 1
Prelude > [1..]
lots of stuff... Interrupted.
Prelude > print x
1
除此之外,我相信除了开始用 take
编写表达式以确保输出有限之外,你真的不能做任何事情......最后列表只有 一个 可能的无限输出和 ghci 无法可靠地知道什么需要缩短,什么不需要。他只是show
s结果并输出。
有时在使用 GHCI 时我不小心尝试计算无限流(例如 [1..]
)。它一直在打印……打印……打印……打印……所以问题是停止打印的唯一方法是退出控制台,丢失我已经完成的所有内容session。有没有办法让 GHCI 默认只取列表中的前 x 项?
只需使用Ctrl+C中断进程:
Prelude > let x = 1
Prelude > [1..]
lots of stuff... Interrupted.
Prelude > print x
1
除此之外,我相信除了开始用 take
编写表达式以确保输出有限之外,你真的不能做任何事情......最后列表只有 一个 可能的无限输出和 ghci 无法可靠地知道什么需要缩短,什么不需要。他只是show
s结果并输出。