[Haskell-beginners] homogeneous value list
ron.leisti at gmail.com
Fri Mar 12 09:44:18 EST 2010
Does this have any implications say, for using infinite data
structures? When we can we assume laziness (in order to use
abstractions like infinity), and when can we not?
On Fri, Mar 12, 2010 at 9:39 AM, Thomas Davie <tom.davie at gmail.com> wrote:
> On 12 Mar 2010, at 14:33, Ozgur Akgun wrote:
> On 12 March 2010 14:28, Thomas Davie <tom.davie at gmail.com> wrote:
>> On 12 Mar 2010, at 14:25, Salil Wadnerkar wrote:
>> On Fri, Mar 12, 2010 at 10:21 PM, Ozgur Akgun <ozgurakgun at gmail.com>
>> Another boring variant from me then.
>> isHomogeneous xs = all (first==) xs
>> where first = head xs
>> head xs
>> give an exception on an empty list?
>> An error, and only if it's evaluated. Lazy evaluation means it's not
>> evaluated here.
>> Of course another non-strict algorithm *might* evaluate head xs here, so
>> this version won't work in all possible Haskell implementations, only the
>> current ones which use lazy evaluation.
> So we need to make sure our code would work in a strict environment, even
> though we are using a lazily evaluated language, just in case if someone
> comes up with a not-that-lazy implementation of haskell?
> If I was thinking this way, I would just stop using haskell at all.
> Not quite, you need to make sure your code works in *all* non-strict
> evaluation models. Lazy evaluation is not the only non-strict evaluation
> method, another implementation of non-strict semantics might actually
> evaluate head xs.
> Beginners mailing list
> Beginners at haskell.org
More information about the Beginners