来自(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
前奏> find_primes [ ] 2