[Haskell-cafe] Call for discussion: OverloadedLists extension

Sjoerd Visscher sjoerd at w3future.com
Tue Sep 25 19:57:32 CEST 2012

So, in order not to have to rely on rewrite rules, would it be a good idea to add unpackCString to the IsString class?

import GHC.Base (unpackCString#, Addr#)

class IsString a where
    fromString :: String -> a
    unpackCString :: Addr# -> a
    unpackCString addr = fromString (unpackCString# addr)

For lists something similar could probably be done.


On Sep 25, 2012, at 10:01 AM, Simon Peyton-Jones <simonpj at microsoft.com> wrote:

> | Here at the University of Tübingen, I am co-supervising (together with
> | Jeroen Weijers) a student project implementing the OverloadedLists
> | extension for GHC. Achim Krause is the student who is working on the
> | project. We took into consideration earlier discussions on this topic
> | [1,2] before embarking on the project.
> | 
> | Achim has worked on two approaches.
> Your second approach is this:
> | [x,y,z] 
> | 
> | as
> | 
> | singleton x `mappend` singleton y `mappend` singleton z ;
> This approach is not good for long literal lists, because you get tons of executable code where the user thought he was just defining a data  structure.  And long literal lists are an important use-case.
> One other possibility is to use a variant of what GHC does for literal strings. Currently
> 	"foo"
> turns into	
> 	unpackCString "foo"#
> where "foo"# is a statically allocate C string, and the "unpackCString" unpacks it lazily.
> Maybe we could make a literal [a,b.c] turn into
> 	unpack [a,b,c]#
> where 
> 	[a,b,c]#
> is a statically-allocated vector?  See http://hackage.haskell.org/trac/ghc/ticket/5218, which is stalled awaiting brain cycles from someone.
> I'm maxed out at the moment.  I'd be very happy if you guys were able to make progress; I'm happy to advise.  Open a ticket, start a wiki page, etc!
> Simon
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

More information about the Haskell-Cafe mailing list