[Haskell-cafe] Call for discussion: OverloadedLists extension
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
> 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]#
> 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!
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
More information about the Haskell-Cafe