[Haskell-cafe] Can we improve Show instance for non-ascii charcters?

Bryan Richter b at chreekat.net
Thu Feb 4 04:55:28 UTC 2016


Gershom speaks my mind. I do not doubt that changing the Show instance for
String will create bugs in some code, but how many bugs will it also fix?
What is the ratio?
On Feb 3, 2016 8:40 PM, "Gershom B" <gershomb at gmail.com> wrote:

> Backwards compatibility is important, but not an absolute. I’d be curious
> if anyone can point to instances where software might _rely_ on the show
> instance for strings not displaying unicode characters?
>
> —Gershom
>
>
> On February 3, 2016 at 5:03:58 PM, David Feuer (david.feuer at gmail.com)
> wrote:
> > There's one open now. thomie commented (
> > https://ghc.haskell.org/trac/ghc/ticket/11529#comment:4 ) that it's
> > possible to hook up your choice of showing function as the one GHCi
> should
> > use to display values. This strikes me as the best available approach
> > preserving backwards compatibility. Adding a GHCi flag for this might be
> > reasonable.
> >
> > On Wed, Feb 3, 2016 at 4:11 PM, Atze van der Ploeg wrote:
> >
> > > I think we can all agree these characters should be shown. Maybe a GHC
> bug
> > > report is a good idea?
> > > On 02/03/2016 10:37 AM, Takayuki Muranushi wrote:
> > > > I think one of the solution is to import and call u_iswprint from
> > > > GHC.Show, too,
> > > > but I don't know it's against any design choices.
> > >
> > > +1 for only escaping non-printable characters.
> > >
> > > > Yesterday, I had a chance to teach Haskell (in Japanese,) and I had
> to
> > > > use English in some of the most exciting examples, like the
> > > > Applicative List example above. I would heartedly like to see GHC
> > > > improve in these directions, so that we can make more happy learning
> > > > materials on Haskell.
> > >
> > > As a workaround, perhaps you can avoid using print/show with core data
> > > structures. Using your applicative example:
> > >
> > > > mapM_ putStrLn $ [(++"の父"), (++"の母")] <*> ["田中", "山田"]
> > > 田中の父
> > > 山田の父
> > > 田中の母
> > > 山田の母
> > >
> > > For other data structures, you can write your own Show instance:
> > >
> > > data Name = Name String String
> > >
> > > instance Show Name where
> > > show (Name family given) = family ++ given
> > >
> > > > print $ Person "山田" "太郎"
> > > 山田太郎
> > >
> > > Travis
> > > _______________________________________________
> > > Haskell-Cafe mailing list
> > > Haskell-Cafe at haskell.org
> > > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> > >
> > > _______________________________________________
> > > Haskell-Cafe mailing list
> > > Haskell-Cafe at haskell.org
> > > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> > >
> > >
> > _______________________________________________
> > Haskell-Cafe mailing list
> > Haskell-Cafe at haskell.org
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> >
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160203/28e94676/attachment.html>


More information about the Haskell-Cafe mailing list