【发布时间】:2012-08-21 22:14:54
【问题描述】:
我有一个我无法弄清楚的错误。系统为 10.5(32 位),采用 Haskell 平台 2010,GHC 6.12
考虑以下几点:
loop :: IO ()
loop = do
return ()
loop
main = do
loop
编译时,
ghc --make test.hs
此代码最终会占用 100% 的 CPU 时间。这是为什么? 你如何在 Haskell 中编写一个这样循环的程序,同时又对笔记本电脑的电池很好?
Concurrent 的“yield”似乎没有做任何有趣的事情。
【问题讨论】:
-
仅供参考,'yield' 没有做任何有趣的事情的原因是'yield' 告诉 Haskell 运行时让步给另一个 Haskell 线程。由于没有其他 Haskell 线程,相同的循环将继续,不会有太多的停顿。
-
你到底为什么想要这个?也许如果你解释你想要达到什么(除了浪费处理器周期),有人可以帮助你更好的方法来做到这一点。
标签: macos haskell ghc osx-leopard