Haskell 平面域中无限值链的最小上界

Haskell 平面域中无限值链的最小上界,haskell,Haskell,假设我们有一个无限的表单列表 let l = [undefined,undefined] ++ [1,1..] 这里的关键属性是列表在平面域整数中形成一个链。haskell有没有办法找到列表l的最小上界?我天真的做法如下: Prelude> import Data.Lub Prelude Data.Lub> foldr (\x y -> x `lub` y) undefined l 1 问题是ghc进程继续使用我的一个CPU核的100%。我正在使用ghc 7.10.3版。仔

假设我们有一个无限的表单列表

let l = [undefined,undefined] ++ [1,1..]
这里的关键属性是列表在平面域整数中形成一个链。haskell有没有办法找到列表l的最小上界?我天真的做法如下:

Prelude> import Data.Lub
Prelude Data.Lub> foldr (\x y -> x `lub` y) undefined l
1

问题是ghc进程继续使用我的一个CPU核的100%。我正在使用ghc 7.10.3版。

仔细查看后,它确实是UNAB中的一个bug

在整数上,
lub
Data.unab.unab
,我无法理解它的精确语义。这看起来像
unab
中的一个bug。它可能过度使用了
掩码
,因此没有终止无限计算(我可以用包含无限循环的有限列表来重现)。