1 Various Unicode-related utilities.
8 #include "HsVersions.h"
11 import Char (chr, ord)
15 stringToUtf8 :: [Int] -> String
18 | c >= 1 && c <= 0x7F = chr c : stringToUtf8 s
19 | c < 0 = panic ("charToUtf8 ("++show c++")")
20 | c <= 0x7FF = chr (0xC0 + c `div` 0x40 ) :
21 chr (0x80 + c `mod` 0x40) :
23 | c <= 0xFFFF = chr (0xE0 + c `div` 0x1000 ) :
24 chr (0x80 + c `div` 0x40 `mod` 0x40) :
25 chr (0x80 + c `mod` 0x40) :
27 | c <= 0x1FFFFF = chr (0xF0 + c `div` 0x40000 ) :
28 chr (0x80 + c `div` 0x1000 `mod` 0x40) :
29 chr (0x80 + c `div` 0x40 `mod` 0x40) :
30 chr (0x80 + c `mod` 0x40) :
32 | c <= 0x3FFFFFF = chr (0xF8 + c `div` 0x1000000 ) :
33 chr (0x80 + c `div` 0x40000 `mod` 0x40) :
34 chr (0x80 + c `div` 0x1000 `mod` 0x40) :
35 chr (0x80 + c `div` 0x40 `mod` 0x40) :
36 chr (0x80 + c `mod` 0x40) :
38 | c <= 0x7FFFFFFF = chr (0xFC + c `div` 0x40000000 ) :
39 chr (0x80 + c `div` 0x1000000 `mod` 0x40) :
40 chr (0x80 + c `div` 0x40000 `mod` 0x40) :
41 chr (0x80 + c `div` 0x1000 `mod` 0x40) :
42 chr (0x80 + c `div` 0x40 `mod` 0x40) :
43 chr (0x80 + c `mod` 0x40) :
45 | otherwise = panic ("charToUtf8 "++show c)