0

我有这个代码:

divisors n = 1:[y|y<-[2..(n `div` 2)], n `mod` y == 0]

writeList l = do print "Start"
                 print l

然后,我想用严格的参数调用函数;我试过了:

writeList $! (divisors 12345678)

(divisors 12345678) \`seq\` (writeList (divisors 12345678))

但它并没有表现得好像它有严格的论点:即在“开始”之后我必须等待评估(divisors 12345678)

我错过了什么?

4

1 回答 1

1

seq(或$!)仅针对第一个头范式进行评估,(:)在您的情况下是构造函数,您可以使用deepseq(或$!!)来评估范式。

于 2012-09-12T20:14:47.307 回答