[RFC] Support Unicode characters in instance Show String

Hécate hecate at glitchbra.in
Thu Jul 8 19:02:29 UTC 2021


 From what I can see from the various typeclasses that exist:

HaTeX's Render 
<https://hackage.haskell.org/package/HaTeX-3.22.3.0/docs/Text-LaTeX-Base-Render.html#t:Render>:

 > Class of values that can be transformed to |Text 
<https://hackage.haskell.org/package/HaTeX-3.22.3.0/docs/Text-LaTeX-Base-Render.html#t:Text>|. 


core-text's Render 
<https://hackage.haskell.org/package/core-text-0.3.0.0/docs/Core-Text-Utilities.html#t:Render>:

 > Types which can be rendered "prettily", that is, formatted by a 
pretty printer and embossed with beautiful ANSI colours when printed to 
the terminal.

ttc's Render 
<https://hackage.haskell.org/package/ttc-1.1.0.1/docs/Data-TTC.html#t:Render>:

 > The Render type class renders a data type as a textual data type.

When defining such classes, people don't seem to enforce much, and on 
the opposite seem to loosely define the requirements, allowing for ANSI 
colours for instance. Since we have a mechanism to produce our own 
instances through newtype wrappers and use Generalised Newtype Deriving 
or Deriving Via, I don't see much of a problem at this point (of course 
I only ask to be proven wrong).

One example in another language is Rust, which has the Debug 
<https://doc.rust-lang.org/core/fmt/trait.Debug.html> and Display 
<https://doc.rust-lang.org/core/fmt/trait.Display.html> traits, Debug 
being akin to our Show, and Display having the following property

 > Display is similar to Debug, but Display is for user-facing output, 
and so cannot be derived.

It also interesting to note that these traits belong to a wider family 
of formatting traits <https://doc.rust-lang.org/core/fmt/index.html> 
used with their built-in syntax of formatting (Binary, Debug, Lower & 
Upper Hex, Display, Octal, Write, etc).

–––

Henning, you are right, `printf` does exist, and it looks pretty rich in 
terms of features and customisation. I acknowledge that not using it is 
mostly a cultural matter, and that it can be fixed by improving our 
current pedagogical material. If we decide as a community that a 
typeclass is actually not the proper tool to get away from Show 
instances, then I will welcome with open arms blog posts & tutorials to 
guide our community towards this solution, and promote them.

Le 08/07/2021 à 20:25, Henning Thielemann a écrit :
>
> On Thu, 8 Jul 2021, Hécate wrote:
>
>> I guess this is the perfect time to come up with a Render typeclass 
>> that targets end-users rather than satisfying 'read . show = id'.
>>
>> chessai: Could the CLC appoint someone to start working on something? 
>> This would be pretty useful to unify the ecosystem (instead of having 
>> custom Outputable, Render, etc).
>
> The question is, whether such a one-fits-all library actually serves 
> the needs of the users. Actually there is already 'printf' which is 
> intended for formatting end-user output. You can write your own 
> PrintfArg instances. Today I am using custom Format classes per project.

-- 
Hécate ✨
🐦: @TechnoEmpress
IRC: Hecate
WWW: https://glitchbra.in
RUN: BSD

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20210708/7d73c11a/attachment.html>


More information about the Libraries mailing list