On Oct 10, 2006, at 08:49 , Matthias Fischmann wrote:

On Tue, Oct 10, 2006 at 08:10:44PM +0800, [EMAIL PROTECTED] wrote:
To: haskell-cafe@haskell.org
From: [EMAIL PROTECTED]
Date: Tue, 10 Oct 2006 20:10:44 +0800
Subject: [Haskell-cafe] beginner's problem about lists

Hi all,

I'm trying to implement a function that returns the shorter one of two given
lists,
something like
shorter :: [a] -> [a] -> [a]
such that shorter [1..10] [1..5] returns [1..5],
and it's okay for shorter [1..5] [2..6] to return either.

Simple, right?

However, it becomes difficult when dealing with infinite lists, for example,
shorter [1..5] (shorter [2..] [3..])
Could this evaluate to [1..5]? I haven't found a proper implementation.

Again it's ok for shorter [2..] [3..] to return whatever that can solve
the above problem correctly.
An infinite list could work, I guess, but I don't know how.

a function that takes two lists and decides whether one of them is
finite or not , without being given further information on the lists,
does not exist.

A function that takes two lists and decides if one is finite does indeed exist. But if both are infinite you'll get partial information out.

The example
  shorter [1..5] (shorter [2..] [3..])
is a little tricky, but certainly doable.

        -- Lennart

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

Reply via email to