String != [Char]

Simon Peyton-Jones simonpj at microsoft.com
Mon Mar 19 20:39:26 CET 2012


Don't forget that with -XOverloadedStrings we already have a IsString class.  (That's not a Haskell Prime extension though.)

class IsString a where
    fromString :: String -> a

Simon

|  -----Original Message-----
|  From: haskell-prime-bounces at haskell.org [mailto:haskell-prime-
|  bounces at haskell.org] On Behalf Of Johan Tibell
|  Sent: 19 March 2012 15:54
|  To: Thomas Schilling
|  Cc: haskell-prime at haskell.org
|  Subject: Re: String != [Char]
|  
|  On Mon, Mar 19, 2012 at 8:45 AM, Thomas Schilling
|  <nominolo at googlemail.com> wrote:
|  > Regarding the type class for converting to and from that type, there
|  > is a perhaps more complicated question: The current fromString method
|  > uses String as the source type which causes unnecessary overhead. This
|  > is unfortunate since GHC's built-in mechanism actually uses
|  > unpackCString[Utf8]# which constructs the inefficient String
|  > representation from a compact memory representation.  I think it would
|  > be best if the new fromString/fromText class allowed an efficient
|  > mechanism like that.  unpackCString# has type Addr# -> [Char] which is
|  > obviously GHC-specific.
|  
|  I've been thinking about this question as well. How about
|  
|  class IsString s where
|      unpackCString :: Ptr Word8 -> CSize -> s
|  
|  It's morally equivalent of unpackCString#, but uses standard Haskell types.
|  
|  -- Johan
|  
|  _______________________________________________
|  Haskell-prime mailing list
|  Haskell-prime at haskell.org
|  http://www.haskell.org/mailman/listinfo/haskell-prime





More information about the Haskell-prime mailing list