The Hugs98 implementation of Haskell 98 does not contain direct support for Unicode characters and strings. Here is a module Unicode.hs for converting Haskell strings to 16 bit integer lists (Unicode) or UTF-8 strings.
These modules implement the Unicode Bidirectional Algorithm in Haskell. See the paper "Implementations of Bidirectional Algorithms" for a more detailed explanation ps pdf.
| Purpose | Module |
|---|---|
| Unicode converter | Unicode.hs |
| Character attribute table | Attributes.hs |
| Character mirroring table | Mirror.hs |
| Character mapping table | Charmap.hs |
| Bidi reordering | UniBidi.hs |
| Test (stdio) | Test.hs |
| Test (file io) | TestDriver.hs |
| Type | Arabic | Hebrew | Mixed | English |
|---|---|---|---|---|
| L | a - z | a - z | a - z | a - z |
| AL | A - Z | A - M | ||
| R | A - Z | N - Z | ||
| AN | 0 - 9 | 5 - 9 | ||
| EN | 0 - 9 | 0 - 4 | 0 - 9 | |
| LRE | [ | [ | [ | [ |
| LRO | { | { | { | { |
| RLE | ] | ] | ] | ] |
| RLO | } | } | } | } |
| ^ | ^ | ^ | ^ | |
| NSM | ~ | ~ | ~ | ~ |
The module Test.hs is used for testing HaBi by entering characters from the keyboard. This test case will loop until an empty line is seen. The format is as follows: runhugs Test [character map]. For example, at a prompt enter runhugs Test arabic. This will use the Arabic character map for determining the characters types.
The module TestDriver.hs takes input from a file. Comments may appear in a file "--". The format is as follows: runhugs TestDriver [file in] [file out] [character map]. For example, at a prompt enter runhugs TestDriver weak.in weak.out mixed. This will read in the file weak.in using the mixed character mapping rules while writing the reordered stream to weak.out.