Two Proposals

Roman Leshchinskiy rl at cse.unsw.edu.au
Tue Oct 4 16:13:59 CEST 2011


Yitzchak Gale wrote:
> Roman Leshchinskiy wrote:
>> In general, if we are going to overload list literals then forcing the
>> desugaring to always go through lists seems wrong to me. There are
>> plenty
>> of data structures where that might result in a significant performance
>> hit.
>
> These are literals. So the lists will almost always be quite short,
> and they will be evaluated only once. So I don't think there will
> be that much of a performance hit normally.

Calling them literals is misleading, IMO. They won't necessarily be only
evaluated once:

f x = [x]

In DPH, it wasn't uncommon for certain benchmarks to spend 90% of the time
constructing arrays from [:x,y,z:] terms until we made a significant
effort to ensure that this doesn't happen. This is the only real data
point related to this that I have but it does indicate that making the
desugaring efficient is quite important.

> That said, my extension that allows them to be desugared
> at compile time would solve that issue if it arises.

Personally, I don't like having desugaring depend on TH at all. I'm not
sure think there is a real need for it. This would, IMO, already be better
than fromList wrt efficiency:

class Cons a where
  type Elem a
  empty :: a
  cons  :: Elem a -> a -> a

Roman






More information about the Glasgow-haskell-users mailing list