And you could just use GeneralizedNewtypeDeriving extension. Then you could use functions from Data.Vector.Generic on your ByteStrings. Much cleaner IMO than OverlappingInstances.
2011/10/17 Christian Maeder <[email protected]> > I think the cleanest solution (just from a theoretical point of view) is to > use a newtype for your byte strings. > > - it should have the same performance > - allows to make ByteString really abstract when hiding the newtype > constructor > - is portable and supplies control over all other instances (not just Show) > > I'm not sure if one could make really bad thinks to your ByteString by > using the Vector interface, but one would want to disallow vector operations > just for compatible with other byte strings. > > It would require more work just on your side, though. > > Cheers Christian > > Am 15.10.2011 16:15, schrieb Bas van Dijk: > > On 15 October 2011 13:34, Roman > Leshchinskiy<[email protected].**au<[email protected]>> >> wrote: >> >>> >>> On 15/10/2011, at 12:26, Roman Leshchinskiy wrote: >>> >>> On 14/10/2011, at 12:37, Bas van Dijk wrote: >>>> >>>> If there's need for a specific Show instance for Vectors of Word8s we >>>>> can always add one directly to vector. (Roman, what are your thoughts >>>>> on this?) >>>>> >>>> >>>> Personally, I think that ByteString and especially Vector Word8 aren't >>>> strings and shouldn't be treated as such. But I wouldn't be strongly >>>> against >>>> showing them as strings. However, I *am* strongly against using >>>> UndecidableInstances in vector and I don't see how to implement this >>>> without >>>> using them. >>>> >>> >>> I meant OverlappingInstances, of course. To clarify, I would still >>> consider it if everybody thinks it's a really good idea. >>> >>> Roman >>> >>> >>> >>> >> I agree that you shouldn't use ByteStrings or Vectors of Word8s for >> Unicode strings. However I can imagine that for quick sessions in ghci >> it can be quite handy if they are shown as strings. For example, >> currently we have: >> >> import Network.HTTP.Enumerator >>> simpleHttp >>> "http://code.haskell.org/~**basvandijk/<http://code.haskell.org/%7Ebasvandijk/> >>> " >>> >> Chunk "<html>\n<head><title>Bas van >> Dijk</title></head>\n<body>\n<**h1>Bas van Dijk</h1>\n\n<p>Email:<a >> href=\"mailto://v.dijk.bas@**gmail.com <[email protected]>\"> >> v.dijk.bas@gmail.**com <[email protected]></a></p>\n\n<p>Nick >> on IRC:<tt>basvandijk</tt></p>\n\**n<a >> href=\"http://www.haskellers.**com/user/basvandijk/\<http://www.haskellers.com/user/basvandijk/%5C> >> ">\n<img >> src=\"http://www.haskellers.**com/static/badge.png\<http://www.haskellers.com/static/badge.png%5C>" >> \n alt=\"I'm >> a Haskeller\"\n border=\"0\">\n</a>\n\n<p>See my<a >> href=\"https://github.com/**basvandijk\<https://github.com/basvandijk%5C>">GitHub</a> >> page for a list of >> projects I work on.</p>\n\n</body>\n</html>\n" Empty >> >> If ByteStrings were not shown as strings this would look like: >> >> Chunk ( fromList >> [60,104,116,109,108,62,10,60,**104,101,97,100,62,60,116,105,** >> 116,108,101,62,66,97,115,32,**118,97,110,32,68,105,106,107,** >> 60,47,116,105,116,108,101,62,**60,47,104,101,97,100,62,10,60,** >> 98,111,100,121,62,10,60,104,**49,62,66,97,115,32,118,97,110,** >> 32,68,105,106,107,60,47,104,**49,62,10,10,60,112,62,69,109,** >> 97,105,108,58,32,60,97,32,104,**114,101,102,61,34,109,97,105,** >> 108,116,111,58,47,47,118,46,**100,105,106,107,46,98,97,115,** >> 64,103,109,97,105,108,46,99,**111,109,34,62,118,46,100,105,** >> 106,107,46,98,97,115,64,103,**109,97,105,108,46,99,111,109,** >> 60,47,97,62,60,47,112,62,10,**10,60,112,62,78,105,99,107,32,** >> 111,110,32,73,82,67,58,32,60,**116,116,62,98,97,115,118,97,** >> 110,100,105,106,107,60,47,116,**116,62,60,47,112,62,10,10,60,** >> 97,32,104,114,101,102,61,34,**104,116,116,112,58,47,47,119,** >> 119,119,46,104,97,115,107,101,**108,108,101,114,115,46,99,111,** >> 109,47,117,115,101,114,47,98,**97,115,118,97,110,100,105,106,** >> 107,47,34,62,10,32,32,60,105,**109,103,32,115,114,99,61,34,** >> 104,116,116,112,58,47,47,119,**119,119,46,104,97,115,107,101,**108 >> > ,108,101,114,115,46,99,111,**109,47,115,116,97,116,105,99,** > 47,98,97,100,103,101,46,112,**110,103,34,32,10,32,32,32,32,** > 32,32,32,97,108,116,61,34,73,**39,109,32,97,32,72,97,115,107,** > 101,108,108,101,114,34,10,32,**32,32,32,32,32,32,98,111,114,** > 100,101,114,61,34,48,34,62,10,**60,47,97,62,10,10,60,112,62,** > 83,101,101,32,109,121,32,60,**97,32,104,114,101,102,61,34,** > 104,116,116,112,115,58,47,47,**103,105,116,104,117,98,46,99,** > 111,109,47,98,97,115,118,97,**110,100,105,106,107,34,62,71,** > 105,116,72,117,98,60,47,97,62,**32,112,97,103,101,32,102,111,** > 114,32,97,32,108,105,115,116,**32,111,102,32,112,114,111,106,** > 101,99,116,115,32,73,32,119,**111,114,107,32,111,110,46,60,** > 47,112,62,10,10,60,47,98,111,**100,121,62,10,60,47,104,116,** > 109,108,62,10]) > >> Empty >> >> Personally, I don't work in ghci that often so I don't care that much >> if we have or don't have specialized Show instances for Vectors of >> Word8s. >> >> So what do other people think about this? >> >> Bas >> >> > ______________________________**_________________ > Haskell-Cafe mailing list > [email protected] > http://www.haskell.org/**mailman/listinfo/haskell-cafe<http://www.haskell.org/mailman/listinfo/haskell-cafe> >
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
