Someone already mentioned John Hughes paper. Another resource is SPJ's
"hair shirt" slides (also discusses type classes and monads).

http://research.microsoft.com/~simonpj/papers/haskell-retrospective/HaskellRetrospective.pdf

Laziness is addressed beginning on slide 19.

Other Nick

On 2/15/07, Nick <[EMAIL PROTECTED]> wrote:

 Hi all,

 (Another topic stolen from a Russian forum discussion).

 As everyone know, there are lot of strict languages, that have
possibilities to "switch on" lazy evaluation when needed.

 But the examples that I saw on Haskell, there was not much use of lazy
evaluation, often there were just several lazy points, and the rest could be
done strictly without loss of generality. For example, in finding primes:

 main = print primes
primes = 2:filter is_prime [3,5..]
is_prime n = all (\p-> n `mod` p /= 0) (takeWhile (\p-> p*p<=n) primes)
 We can rewrite this in strict languages with lazy constructs. For example,
in Scala (of course stream is not only lazily evaluated thing there)
def main(args: Array[String]): Unit = {
     val n = Integer.parseInt(args(0))
     System.out.println(primes(ints(2)) take n toList)
 }

 def primes(nums: Stream[Int]): Stream[Int] =
     Stream.cons(nums.head,
         primes ((nums tail) filter (x => x % nums.head != 0)) )

 def ints(n: Int): Stream[Int] =
     Stream.cons(n, ints(n+1))

 I think the Haskell solution is more compact due to syntactic sugar,
curring and "parentheses-free-ness", *not* lazy evaluation.

 According to one guy's analogy: the Real World is strict - in order to
drink tea, you have to put the cattle on the fire, wait until water boils,
brew tea and then drink. Not the cattle is put on the fire, water boils and
the tea is brewed when you take the empty cup to start drinking. :-)

 The question is the following: how big the gap between strict languages
with lazy constructs and Haskell? Does the default lazyness have irrefutable
advantage over default strictness?

 Thank you for the attention.

 With best regards,
 Nick.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to