为什么haskellwiki素数实现有一个单位参数

为什么haskellwiki素数实现有一个单位参数,haskell,wiki,primes,Haskell,Wiki,Primes,标题上写着什么 摘自haskellwiki素数页面的示例: {-# OPTIONS_GHC -O2 -fno-cse #-} primesTME () = 2 : ([3,5..] `minus` join [[p*p,p*p+2*p..] | p <- primes']) where .... 争论的目的是什么?没有它,代码似乎可以正常工作。我的猜测是,它的效果是强制为每个应用程序重新计算素数列表,但为什么这样做是可取的?您是否希望在内存中有一个1000000+素数的持久

标题上写着什么

摘自haskellwiki素数页面的示例:

{-# OPTIONS_GHC -O2 -fno-cse #-}
primesTME () = 2 : ([3,5..] `minus` join [[p*p,p*p+2*p..] | p <- primes']) 
  where
    ....

争论的目的是什么?没有它,代码似乎可以正常工作。我的猜测是,它的效果是强制为每个应用程序重新计算素数列表,但为什么这样做是可取的?

您是否希望在内存中有一个1000000+素数的持久列表,您只需要在以后的某个点上使用,并消耗8MB的RAM?如果没有,请使用虚拟参数和一些标志来避免共享。

Ah,是的。忘记了空间,只想着需要的时间。谢谢。你提到了标志:fno cse对于不将列表保存在内存中是必要的吗?这个参数是否被认为是一个普通的子表达式,或者受到这个标志的影响?@Boris:如果完成了CSE,额外的参数可能根本没有效果。如果我真的想要它呢?然后我会说primeList=primesTME并保持primeList不变?@matrixprog这是一种方法。