-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFullwidth.hs
More file actions
115 lines (110 loc) · 1.33 KB
/
Fullwidth.hs
File metadata and controls
115 lines (110 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
module Main where
-- maps ordinary latin characters to fullwidth equivalents
-- takes no parameters, goes from stdin to stdio
-- build with: ghc --make Fullwidth
import qualified Data.IntMap as I
import Data.Maybe (maybe)
fullW = I.fromList . map (\(s:t:[]) -> (fromEnum s, fromEnum t)) $ [
"!!",
"\""",
"##",
"$$",
"%%",
"&&",
"''",
"((",
"))",
"**",
"++",
",,",
"--",
"..",
"//",
"00",
"11",
"22",
"33",
"44",
"55",
"66",
"77",
"88",
"99",
"::",
";;",
"<<",
"==",
">>",
"??",
"@@",
"AA",
"BB",
"CC",
"DD",
"EE",
"FF",
"GG",
"HH",
"II",
"JJ",
"KK",
"LL",
"MM",
"NN",
"OO",
"PP",
"QQ",
"RR",
"SS",
"TT",
"UU",
"VV",
"WW",
"XX",
"YY",
"ZZ",
"[[",
"\\\",
"]]",
"^^",
"__",
"``",
"aa",
"bb",
"cc",
"dd",
"ee",
"ff",
"gg",
"hh",
"ii",
"jj",
"kk",
"ll",
"mm",
"nn",
"oo",
"pp",
"qq",
"rr",
"ss",
"tt",
"uu",
"vv",
"ww",
"xx",
"yy",
"zz",
"{{",
"||",
"}}",
"~~",
"¢¢",
"££",
"¬¬",
"¯ ̄",
"¦¦",
"¥¥",
"₩₩"]
main = interact (map fullLook)
fullLook c = maybe c toEnum . flip I.lookup fullW . fromEnum $ c