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