根据http://www.haskell.org/haskellwiki/Reactive-banana,我发现了反应性香蕉-wx并想知道是否还有一个类似于gtk的包,因为反应性香蕉应该支持gtk
我的 Haskell 程序中存在空间泄漏,我可以将其查明为一个最小的示例,如下所示。我希望以下代码(尽管不会终止,但我不在乎)在常量内存中运行,但事实并非如此:
head . filter (const False) $ (transpose [[1..]])
Run Code Online (Sandbox Code Playgroud)
whilehead . filter (const False) $ [1..]确实在恒定内存中运行。
所以我猜这一定与在无限列表上使用“转置”有关。忽略更复杂的基础库实现,如果我们定义转置transpose xss = map head xss : transpose (map tail xss),为什么会出现空间泄漏?map head xss我的假设是垃圾收集器可以释放以前在函数的每个步骤中消耗的内存filter。我想这map tail xss会以某种方式阻止这种情况发生?!无论如何,我可以添加某种严格性注释或类似的注释,transpose以便该简单的示例确实在恒定内存中运行吗?