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 _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users