@hackage ascii1.7.0.1

The ASCII character set and encoding

What is ASCII?

The American Standard Code for Information Interchange (ASCII) comprises a set of 128 characters, each represented by 7 bits. 33 of these characters are "control codes"; a few of these are still in use, but most are obsolete relics of the early days of computing. The other 95 are "printable characters" such as letters and numbers, mostly corresponding to the keys on an American English keyboard.

Nowadays instead of ASCII we typically work with text using an encoding such as UTF-8 that can represent the entire Unicode character set, which includes over a hundred thousand characters and is not limited to the symbols of any particular writing system or culture. However, ASCII is still relevant to network protocols; for example, we can see it in the specification of HTTP.

There is a convenient relationship between ASCII and Unicode: the ASCII characters are the first 128 characters of the much larger Unicode character set. The C0 Controls and Basic Latin section of the Unicode standard contains a list of all the ASCII characters.

Haskell packages

This repository contains the main API, the ASCII module in the ascii package, which is an amalgamation of smaller packages in other repositories.

  • If you only need the ASCII Char type, you can use the ascii-char package, which is minimal so that it can be kept stable.

  • The ascii-group package defines the Group type (Control and Printable), and the ascii-case package defines the Case type (UpperCase and LowerCase). These package are also small and stable.

  • The ascii-predicates package provides additional ways of categorizing characters similar to what you can find in the base package.

  • For case-insensitivity, use the ascii-caseless package.

  • The ascii-superset package defines CharSuperset and StringSuperset classes to generalize types that represent characters and strings, respectively, in character sets larger than ASCII. It also defines the ASCII type constructor, which is used to indicate that a value from some ASCII superset is confined to ASCII.

  • The ascii-numbers package provides utilities for working with numbers represented using ASCII digits 0-9, ASCII letters A-F to represent hexadecimal digits 10-15, and the HyphenMinus character for negation.

  • The ascii-th package provides a quasi-quoter that allows one to safely and conveniently express ASCII string literals. The generated expressions are polymorphic and can take the form of any type belonging to the StringSuperset class, including [ASCII.Char], String, ByteString, and Text.