Haskell Elm编译器永远在运行,计算机正变得炙手可热

Haskell Elm编译器永远在运行,计算机正变得炙手可热,haskell,switch-statement,pattern-matching,elm,Haskell,Switch Statement,Pattern Matching,Elm,我不确定是什么导致了这个问题,但在我正在构建的一个项目中,编译器仅仅编译一个模块就花费了数小时。我的代码库的总大小是352KB,但没有一个模块的大小超过10KB。我使用的是本机端口,但它非常简单;我只是用它来取Date.now() 有没有什么众所周知的东西会导致elm编译器永远无法编译?我没有太多依赖项,但我经常使用Html。我真的很感激任何关于什么会导致这种情况的提示 编辑 因此,从0.16开始,大号格表达式将导致优化器花费很长时间。下面是提出这个问题的答案,还有一个例子 我想这可能是冗长的,

我不确定是什么导致了这个问题,但在我正在构建的一个项目中,编译器仅仅编译一个模块就花费了数小时。我的代码库的总大小是352KB,但没有一个模块的大小超过10KB。我使用的是本机端口,但它非常简单;我只是用它来取
Date.now()

有没有什么众所周知的东西会导致elm编译器永远无法编译?我没有太多依赖项,但我经常使用Html。我真的很感激任何关于什么会导致这种情况的提示

编辑 因此,从0.16开始,大号格表达式将导致优化器花费很长时间。下面是提出这个问题的答案,还有一个例子


我想这可能是冗长的,为了保持胡萝卜的存在,为什么elm的编译器会采用这种方式进行大小写匹配呢?这里的底层机制是什么?为什么编译器要花一个多小时来优化case语句上的60多个模式匹配?

大格表达式将导致优化器花费很长时间,从0.16开始。下面是提出这个问题的答案,还有一个。

我很好奇。Elm编译器执行什么样的优化,编译一个case表达式需要几个小时?您的大小写表达式似乎不太大(至少对于计算机来说不够大)。这意味着Elm编译器有一个非常非常糟糕的优化算法。例如,想象一下用所有721神奇宝贝编译一个case表达式需要多长时间。我猜答案是,也许你应该尝试添加
haskell
标记,看看haskell的人是否能向我们透露一些东西。我认为你应该在更好的地方问一个新问题,来修复case的东西,回答你自己的问题,只需解释一下案例的内容是众所周知的缓慢。至于原因,相关代码似乎就在这里:引用的Scott&Ramsey论文描述了“小分支因子”启发式是如何以灾难性的速度缓慢的。在上面的代码中,当较小的默认值绑定时,启发式被用作一个分界线。所以,我敢打赌,在你的坏例子中,小违约的情况很多,我们遇到了可怕的情况。我的观点:Elm不应该使用SBF作为一个因素,句号。你能自我回答这个问题吗,这样它就不会出现在未回答的列表上了?它真的完成编译了吗?