specify call-by-need
John Meacham
john at repetae.net
Wed Feb 16 03:12:27 CET 2011
Except for the fact that compilers don't actually implement call by
need. An example would be the speculative evaluation of ghc.
http://research.microsoft.com/en-us/um/people/simonpj/papers/optimistic/adaptive_speculation.ps
And local optimizations that affect asymptotic behavior are used all
the time, to the point they are vital for a functioning compiler. The
tail-call optimization turning O(n) space usage to O(1) being a prime
example.
And what is meant by "call-by-need" in the presence of exceptions and
concurrency is not entirely obvious.
I think that specifying call-by-need would be more confusing and
contrary to what actually exists in the wild.
John
On Tue, Feb 15, 2011 at 5:53 PM, Scott Turner <2haskell at pkturner.org> wrote:
> In practice, Haskell a call-by-need language. Still, software
> developers are not on firm ground when they run into trouble with
> evaluation order, because the language definition leaves this open. Is
> this an underspecification that should be fixed?
>
> 1. Haskell programmers learn the pitfalls of sharing as soon
> as they cut their teeth on 'fib',
> 2. Virtually all significant-sized Haskell programs rely on
> lazy evaluation and have never been tested with another
> evaluation strategy,
> 3. Questions come up on Haskell-Café, infrequently but regularly,
> regarding whether a compiler optimization has altered sharing
> of values within a program, causing it to fail,
> 4. The rationale for the monomorphism restriction assumes
> lazy evaluation,
> 5. It is the effect on asymptotic behavior that matters,
> 6. Portable Haskell code should not have to allow for the
> variety of non-strict evaluation strategies, as the Haskell
> Report currently implies.
>
> I suggest specifying call-by-need evaluation, allowing for the places
> where type classes prevent this. If necessary, make it clear that local
> optimizations not affecting asymptotic behavior are permitted.
>
> This would not eliminate struggles with evaluation order. The intent
> would be to clarify expectations.
>
> -- Scott Turner
>
> _______________________________________________
> Haskell-prime mailing list
> Haskell-prime at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-prime
>
More information about the Haskell-prime
mailing list