作为来自(SWI) Prolog的人,我发现让Haskell实时输出非常困难。
最简单的例子,我希望Haskell在每次迭代时打印一些东西:
fac 0 = 1
fac n = fac ( n-1 ) * n
或者我希望能够从一个永远不会停止的程序中获取输出...
-- A possible halt statement...
-- find_primes l 100 = l
find_primes l n = if ( is_prime l n ) then find_primes nn s else find_primes l s
where s = n + 1
nn = n:l
is_prime :: Integral a => [a] -> a -> Bool
is_prime [] n = True --print the prime number on the fly
is_prime (h:t) n = if ( r /= 0 ) then is_prime t n else False
where r = n mod h
Prelude> find_primes [ ] 2