/*---------------------------------------------------------------------------
  Copyright 2012-2021, Microsoft Research, Daan Leijen.

  This is free software; you can redistribute it and/or modify it under the
  terms of the Apache License, Version 2.0. A copy of the License can be
  found in the LICENSE file at the root of this distribution.
---------------------------------------------------------------------------*/

/* Basic unicode support.

*/
module std/text/unicodestd/text/unicode

import std/core/undivstd/core/undiv

// Grapheme's are an alias for `:string`.
// Each grapheme is a self-contained symbol consisting of
// a unicode character followed by combining characters and/or
// combining marks.
pub alias graphemestd/text/unicode/grapheme: V = stringstd/core/types/string: V

extern import {
  cs file "unicode-inline.cs"
  js file "unicode-inline.js"
}

//--------------------------------------------------------------
// Calculation of graphemes
//--------------------------------------------------------------

// Is this a combining character?
pub fun is-combiningstd/text/unicode/is-combining: (c : char) -> bool( cc: char : charstd/core/types/char: V )result: -> total bool : boolstd/core/types/bool: V {
  val ii: int = cc: char.intstd/core/char/int: (char) -> int
  ((ii: int >=std/core/int/(>=): (x : int, y : int) -> bool 0x0300literal: int
dec = 768
hex16= 0x0300
bit16= 0b0000001100000000
&&std/core/types/(&&): (x : bool, y : bool) -> bool ii: int <=std/core/int/(<=): (x : int, y : int) -> bool 0x036Fliteral: int
dec = 879
hex16= 0x036F
bit16= 0b0000001101101111
) ||std/core/types/(||): (x : bool, y : bool) -> bool (ii: int >=std/core/int/(>=): (x : int, y : int) -> bool 0x1AB0literal: int
dec = 6832
hex16= 0x1AB0
bit16= 0b0001101010110000
&&std/core/types/(&&): (x : bool, y : bool) -> bool ii: int <=std/core/int/(<=): (x : int, y : int) -> bool 0x1AFFliteral: int
dec = 6911
hex16= 0x1AFF
bit16= 0b0001101011111111
) ||std/core/types/(||): (x : bool, y : bool) -> bool (ii: int >=std/core/int/(>=): (x : int, y : int) -> bool 0x1DC0literal: int
dec = 7616
hex16= 0x1DC0
bit16= 0b0001110111000000
&&std/core/types/(&&): (x : bool, y : bool) -> bool ii: int <=std/core/int/(<=): (x : int, y : int) -> bool 0x1DFFliteral: int
dec = 7679
hex16= 0x1DFF
bit16= 0b0001110111111111
) ||std/core/types/(||): (x : bool, y : bool) -> bool (ii: int >=std/core/int/(>=): (x : int, y : int) -> bool 0x20D0literal: int
dec = 8400
hex16= 0x20D0
bit16= 0b0010000011010000
&&std/core/types/(&&): (x : bool, y : bool) -> bool ii: int <=std/core/int/(<=): (x : int, y : int) -> bool 0x20FFliteral: int
dec = 8447
hex16= 0x20FF
bit16= 0b0010000011111111
) ||std/core/types/(||): (x : bool, y : bool) -> bool (ii: int >=std/core/int/(>=): (x : int, y : int) -> bool 0xFE20literal: int
dec = 65056
hex32= 0x0000FE20
bit32= 0b00000000000000001111111000100000
&&std/core/types/(&&): (x : bool, y : bool) -> bool ii: int <=std/core/int/(<=): (x : int, y : int) -> bool 0xFE2Fliteral: int
dec = 65071
hex32= 0x0000FE2F
bit32= 0b00000000000000001111111000101111
))
} // Join combining characters with their base into a grapheme. fun join-combiningstd/text/unicode/join-combining: (cs : list<char>, comb : ? (list<char>), acc : ? (list<grapheme>)) -> list<grapheme>( cscs: list<char> : liststd/core/types/list: V -> V<charstd/core/types/char: V>, combcomb: ? (list<char>) : liststd/core/types/list: V -> V<charstd/core/types/char: V> = [std/core/types/Nil: forall<a> list<a>]std/core/types/Nil: forall<a> list<a>, accacc: ? (list<grapheme>) : liststd/core/types/list: V -> V<graphemestd/text/unicode/grapheme: V> = [std/core/types/Nil: forall<a> list<a>]std/core/types/Nil: forall<a> list<a>)result: -> total list<grapheme> : liststd/core/types/list: V -> V<graphemestd/text/unicode/grapheme: V> { match(cscs: list<char>) { Consstd/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>(cc: char,cccc: list<char>) -> if (cc: char.is-combiningstd/text/unicode/is-combining: (c : char) -> bool) then cccc: list<char>.join-combiningstd/text/unicode/join-combining: (cs : list<char>, comb : ? (list<char>), acc : ? (list<grapheme>)) -> list<grapheme>( Consstd/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>(cc: char,combcomb: list<char>), accacc: list<grapheme> ) else cccc: list<char>.join-combiningstd/text/unicode/join-combining: (cs : list<char>, comb : ? (list<char>), acc : ? (list<grapheme>)) -> list<grapheme>( [std/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>cc: char]std/core/types/Nil: forall<a> list<a>, consrevstd/text/unicode/consrev: (xs : list<char>, xss : list<string>) -> list<string>(combcomb: list<char>,accacc: list<grapheme>) ) Nilstd/core/types/Nil: forall<a> list<a> -> consrevstd/text/unicode/consrev: (xs : list<char>, xss : list<string>) -> list<string>(combcomb: list<char>,accacc: list<grapheme>).reversestd/core/list/reverse: (xs : list<grapheme>) -> list<grapheme> } } fun consrevstd/text/unicode/consrev: (xs : list<char>, xss : list<string>) -> list<string>(xsxs: list<char>,xssxss: list<string>)result: -> total list<string> { if (xsxs: list<char>.is-nilstd/core/types/is-nil: (list : list<char>) -> bool) then xssxss: list<string> else Consstd/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>(xsxs: list<char>.reversestd/core/list/reverse: (xs : list<char>) -> list<char>.stringstd/core/string/listchar/string: (cs : list<char>) -> string,xssxss: list<string>) } // Convert a string to a list of graphemes. // Each grapheme will be in `NFC` normalized form. pub fun graphemesstd/text/unicode/graphemes: (s : string) -> list<grapheme>( ss: string : stringstd/core/types/string: V )result: -> total list<grapheme> : liststd/core/types/list: V -> V<graphemestd/text/unicode/grapheme: V> { //s.vgraphemes.list ss: string.normalizestd/text/unicode/normalize: (s : string, norm : ? normalization) -> string(NFCstd/text/unicode/NFC: normalization).liststd/core/string/list: (s : string) -> list<char>.join-combiningstd/text/unicode/join-combining: (cs : list<char>, comb : ? (list<char>), acc : ? (list<grapheme>)) -> list<grapheme> } //-------------------------------------------------------------- // Normalization //-------------------------------------------------------------- // Type of unicode [normalization](https://www.unicode.org/reports/tr15) pub type normalizationstd/text/unicode/normalization: V { // Canonical composition (default). Use composed characters when possible. con NFCstd/text/unicode/NFC: normalization // Canonical decomposition. con NFDstd/text/unicode/NFD: normalization // Compatibility composition. con NFKCstd/text/unicode/NFKC: normalization // Compatibility decomposition. con NFKDstd/text/unicode/NFKD: normalization } extern normalizexstd/text/unicode/normalizex: (s : string, norm : string) -> string( ss: string : stringstd/core/types/string: V, normnorm: string : stringstd/core/types/string: V ) : stringstd/core/types/string: V { c inline "#1" // TODO: use utf8proc library? cs inline "Unicode.Normalize(#1,#2)" js inline "_normalize(#1,#2)" }result: -> total string // Normalize a unicode string. If no normalization form is given, `NFC` is used. pub fun normalizestd/text/unicode/normalize: (s : string, norm : ? normalization) -> string( ss: string : stringstd/core/types/string: V, normnorm: ? normalization : normalizationstd/text/unicode/normalization: V = NFCstd/text/unicode/NFC: normalization )result: -> total string : stringstd/core/types/string: V { val normsnorms: string = match(normnorm: normalization) { NFCstd/text/unicode/NFC: normalization -> "NFC"literal: string
count= 3
NFDstd/text/unicode/NFD: normalization -> "NFD"literal: string
count= 3
NFKCstd/text/unicode/NFKC: normalization -> "NFKC"literal: string
count= 4
NFKDstd/text/unicode/NFKD: normalization -> "NFKD"literal: string
count= 4
} ss: string.normalizexstd/text/unicode/normalizex: (s : string, norm : string) -> string(normsnorms: string)
} //-------------------------------------------------------------- // Column widths //-------------------------------------------------------------- // Return the column-width of a unicode character. // Equivalent to ``wcwidth`` pub fun char/widthstd/text/unicode/char/width: (c : char) -> int( cc: char : charstd/core/types/char: V )result: -> total int : intstd/core/types/int: V { if (zero-widthsstd/text/unicode/zero-widths: delayed<total,rtree>.forcestd/core/delayed/force: (delayed : delayed<total,rtree>) -> rtree.containsstd/text/unicode/contains: (t : rtree, i : int) -> bool(cc: char.intstd/core/char/int: (char) -> int)) then 0literal: int
dec = 0
hex8 = 0x00
bit8 = 0b00000000
elif (asian-widestd/text/unicode/asian-wide: delayed<total,rtree>.forcestd/core/delayed/force: (delayed : delayed<total,rtree>) -> rtree.containsstd/text/unicode/contains: (t : rtree, i : int) -> bool(cc: char.intstd/core/char/int: (char) -> int)) then 2literal: int
dec = 2
hex8 = 0x02
bit8 = 0b00000010
else 1literal: int
dec = 1
hex8 = 0x01
bit8 = 0b00000001
} // Return the total column-width of a string. pub fun string/widthstd/text/unicode/string/width: (s : string) -> int( ss: string : stringstd/core/types/string: V )result: -> total int : intstd/core/types/int: V { var totaltotal: local-var<$2662,int> := 0literal: int
dec = 0
hex8 = 0x00
bit8 = 0b00000000
ss: string.foreachstd/core/sslice/string/foreach: (s : string, action : (c : char) -> (local<$2662>) ()) -> (local<$2662>) ()( fnfn: (c : char) -> (local<$2662>) ()(cc: char) { totaltotal: local-var<$2662,int> :=std/core/types/local-set: (v : local-var<$2662,int>, assigned : int) -> (local<$2662>) () totaltotal: int +std/core/int/(+): (x : int, y : int) -> (local<$2662>) int cc: char.widthstd/text/unicode/char/width: (c : char) -> (local<$2662>) int }) totaltotal: int
} //-------------------------------------------------------------- // Families: asian-wide, zero-widths //-------------------------------------------------------------- // These characters are considered wide, i.e. 2 columns wide. val asian-widestd/text/unicode/asian-wide: delayed<total,rtree> : delayedstd/core/delayed/delayed: (E, V) -> V<totalstd/core/types/total: E,rtreestd/text/unicode/rtree: V> = delaystd/core/delayed/delay: (action : () -> rtree) -> delayed<total,rtree>{ build-rtreestd/text/unicode/build-rtree: (xs : list<rtree>) -> rtree([std/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a> singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1100literal: int
dec = 4352
hex16= 0x1100
bit16= 0b0001000100000000
,0x115Fliteral: int
dec = 4447
hex16= 0x115F
bit16= 0b0001000101011111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x2329literal: int
dec = 9001
hex16= 0x2329
bit16= 0b0010001100101001
,0x2329literal: int
dec = 9001
hex16= 0x2329
bit16= 0b0010001100101001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x232Aliteral: int
dec = 9002
hex16= 0x232A
bit16= 0b0010001100101010
,0x232Aliteral: int
dec = 9002
hex16= 0x232A
bit16= 0b0010001100101010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x2E80literal: int
dec = 11904
hex16= 0x2E80
bit16= 0b0010111010000000
,0x303Eliteral: int
dec = 12350
hex16= 0x303E
bit16= 0b0011000000111110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x3040literal: int
dec = 12352
hex16= 0x3040
bit16= 0b0011000001000000
,0xA4CFliteral: int
dec = 42191
hex32= 0x0000A4CF
bit32= 0b00000000000000001010010011001111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xAC00literal: int
dec = 44032
hex32= 0x0000AC00
bit32= 0b00000000000000001010110000000000
,0xD7A3literal: int
dec = 55203
hex32= 0x0000D7A3
bit32= 0b00000000000000001101011110100011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xF900literal: int
dec = 63744
hex32= 0x0000F900
bit32= 0b00000000000000001111100100000000
,0xFAFFliteral: int
dec = 64255
hex32= 0x0000FAFF
bit32= 0b00000000000000001111101011111111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xFE10literal: int
dec = 65040
hex32= 0x0000FE10
bit32= 0b00000000000000001111111000010000
,0xFE19literal: int
dec = 65049
hex32= 0x0000FE19
bit32= 0b00000000000000001111111000011001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xFE30literal: int
dec = 65072
hex32= 0x0000FE30
bit32= 0b00000000000000001111111000110000
,0xFE6Fliteral: int
dec = 65135
hex32= 0x0000FE6F
bit32= 0b00000000000000001111111001101111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xFF00literal: int
dec = 65280
hex32= 0x0000FF00
bit32= 0b00000000000000001111111100000000
,0xFF60literal: int
dec = 65376
hex32= 0x0000FF60
bit32= 0b00000000000000001111111101100000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xFFE0literal: int
dec = 65504
hex32= 0x0000FFE0
bit32= 0b00000000000000001111111111100000
,0xFFE6literal: int
dec = 65510
hex32= 0x0000FFE6
bit32= 0b00000000000000001111111111100110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x20000literal: int
dec = 131072
hex32= 0x00020000
bit32= 0b00000000000000100000000000000000
,0x2FFFDliteral: int
dec = 196605
hex32= 0x0002FFFD
bit32= 0b00000000000000101111111111111101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x30000literal: int
dec = 196608
hex32= 0x00030000
bit32= 0b00000000000000110000000000000000
,0x3FFFDliteral: int
dec = 262141
hex32= 0x0003FFFD
bit32= 0b00000000000000111111111111111101
), ]std/core/types/Nil: forall<a> list<a>)
} // These characters have zero width val zero-widthsstd/text/unicode/zero-widths: delayed<total,rtree> : delayedstd/core/delayed/delayed: (E, V) -> V<totalstd/core/types/total: E,rtreestd/text/unicode/rtree: V> = delaystd/core/delayed/delay: (action : () -> rtree) -> delayed<total,rtree>{ build-rtreestd/text/unicode/build-rtree: (xs : list<rtree>) -> rtree([std/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a> singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0000literal: int
dec = 0
hex8 = 0x00
bit8 = 0b00000000
, 0x001Fliteral: int
dec = 31
hex8 = 0x1F
bit8 = 0b00011111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x007Fliteral: int
dec = 127
hex8 = 0x7F
bit8 = 0b01111111
, 0x00A0literal: int
dec = 160
hex16= 0x00A0
bit16= 0b0000000010100000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0300literal: int
dec = 768
hex16= 0x0300
bit16= 0b0000001100000000
, 0x036Fliteral: int
dec = 879
hex16= 0x036F
bit16= 0b0000001101101111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0483literal: int
dec = 1155
hex16= 0x0483
bit16= 0b0000010010000011
, 0x0486literal: int
dec = 1158
hex16= 0x0486
bit16= 0b0000010010000110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0488literal: int
dec = 1160
hex16= 0x0488
bit16= 0b0000010010001000
, 0x0489literal: int
dec = 1161
hex16= 0x0489
bit16= 0b0000010010001001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0591literal: int
dec = 1425
hex16= 0x0591
bit16= 0b0000010110010001
, 0x05BDliteral: int
dec = 1469
hex16= 0x05BD
bit16= 0b0000010110111101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x05BFliteral: int
dec = 1471
hex16= 0x05BF
bit16= 0b0000010110111111
, 0x05BFliteral: int
dec = 1471
hex16= 0x05BF
bit16= 0b0000010110111111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x05C1literal: int
dec = 1473
hex16= 0x05C1
bit16= 0b0000010111000001
, 0x05C2literal: int
dec = 1474
hex16= 0x05C2
bit16= 0b0000010111000010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x05C4literal: int
dec = 1476
hex16= 0x05C4
bit16= 0b0000010111000100
, 0x05C5literal: int
dec = 1477
hex16= 0x05C5
bit16= 0b0000010111000101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x05C7literal: int
dec = 1479
hex16= 0x05C7
bit16= 0b0000010111000111
, 0x05C7literal: int
dec = 1479
hex16= 0x05C7
bit16= 0b0000010111000111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0600literal: int
dec = 1536
hex16= 0x0600
bit16= 0b0000011000000000
, 0x0603literal: int
dec = 1539
hex16= 0x0603
bit16= 0b0000011000000011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0610literal: int
dec = 1552
hex16= 0x0610
bit16= 0b0000011000010000
, 0x0615literal: int
dec = 1557
hex16= 0x0615
bit16= 0b0000011000010101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x064Bliteral: int
dec = 1611
hex16= 0x064B
bit16= 0b0000011001001011
, 0x065Eliteral: int
dec = 1630
hex16= 0x065E
bit16= 0b0000011001011110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0670literal: int
dec = 1648
hex16= 0x0670
bit16= 0b0000011001110000
, 0x0670literal: int
dec = 1648
hex16= 0x0670
bit16= 0b0000011001110000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x06D6literal: int
dec = 1750
hex16= 0x06D6
bit16= 0b0000011011010110
, 0x06E4literal: int
dec = 1764
hex16= 0x06E4
bit16= 0b0000011011100100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x06E7literal: int
dec = 1767
hex16= 0x06E7
bit16= 0b0000011011100111
, 0x06E8literal: int
dec = 1768
hex16= 0x06E8
bit16= 0b0000011011101000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x06EAliteral: int
dec = 1770
hex16= 0x06EA
bit16= 0b0000011011101010
, 0x06EDliteral: int
dec = 1773
hex16= 0x06ED
bit16= 0b0000011011101101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x070Fliteral: int
dec = 1807
hex16= 0x070F
bit16= 0b0000011100001111
, 0x070Fliteral: int
dec = 1807
hex16= 0x070F
bit16= 0b0000011100001111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0711literal: int
dec = 1809
hex16= 0x0711
bit16= 0b0000011100010001
, 0x0711literal: int
dec = 1809
hex16= 0x0711
bit16= 0b0000011100010001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0730literal: int
dec = 1840
hex16= 0x0730
bit16= 0b0000011100110000
, 0x074Aliteral: int
dec = 1866
hex16= 0x074A
bit16= 0b0000011101001010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x07A6literal: int
dec = 1958
hex16= 0x07A6
bit16= 0b0000011110100110
, 0x07B0literal: int
dec = 1968
hex16= 0x07B0
bit16= 0b0000011110110000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x07EBliteral: int
dec = 2027
hex16= 0x07EB
bit16= 0b0000011111101011
, 0x07F3literal: int
dec = 2035
hex16= 0x07F3
bit16= 0b0000011111110011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0901literal: int
dec = 2305
hex16= 0x0901
bit16= 0b0000100100000001
, 0x0902literal: int
dec = 2306
hex16= 0x0902
bit16= 0b0000100100000010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x093Cliteral: int
dec = 2364
hex16= 0x093C
bit16= 0b0000100100111100
, 0x093Cliteral: int
dec = 2364
hex16= 0x093C
bit16= 0b0000100100111100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0941literal: int
dec = 2369
hex16= 0x0941
bit16= 0b0000100101000001
, 0x0948literal: int
dec = 2376
hex16= 0x0948
bit16= 0b0000100101001000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x094Dliteral: int
dec = 2381
hex16= 0x094D
bit16= 0b0000100101001101
, 0x094Dliteral: int
dec = 2381
hex16= 0x094D
bit16= 0b0000100101001101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0951literal: int
dec = 2385
hex16= 0x0951
bit16= 0b0000100101010001
, 0x0954literal: int
dec = 2388
hex16= 0x0954
bit16= 0b0000100101010100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0962literal: int
dec = 2402
hex16= 0x0962
bit16= 0b0000100101100010
, 0x0963literal: int
dec = 2403
hex16= 0x0963
bit16= 0b0000100101100011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0981literal: int
dec = 2433
hex16= 0x0981
bit16= 0b0000100110000001
, 0x0981literal: int
dec = 2433
hex16= 0x0981
bit16= 0b0000100110000001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x09BCliteral: int
dec = 2492
hex16= 0x09BC
bit16= 0b0000100110111100
, 0x09BCliteral: int
dec = 2492
hex16= 0x09BC
bit16= 0b0000100110111100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x09C1literal: int
dec = 2497
hex16= 0x09C1
bit16= 0b0000100111000001
, 0x09C4literal: int
dec = 2500
hex16= 0x09C4
bit16= 0b0000100111000100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x09CDliteral: int
dec = 2509
hex16= 0x09CD
bit16= 0b0000100111001101
, 0x09CDliteral: int
dec = 2509
hex16= 0x09CD
bit16= 0b0000100111001101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x09E2literal: int
dec = 2530
hex16= 0x09E2
bit16= 0b0000100111100010
, 0x09E3literal: int
dec = 2531
hex16= 0x09E3
bit16= 0b0000100111100011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0A01literal: int
dec = 2561
hex16= 0x0A01
bit16= 0b0000101000000001
, 0x0A02literal: int
dec = 2562
hex16= 0x0A02
bit16= 0b0000101000000010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0A3Cliteral: int
dec = 2620
hex16= 0x0A3C
bit16= 0b0000101000111100
, 0x0A3Cliteral: int
dec = 2620
hex16= 0x0A3C
bit16= 0b0000101000111100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0A41literal: int
dec = 2625
hex16= 0x0A41
bit16= 0b0000101001000001
, 0x0A42literal: int
dec = 2626
hex16= 0x0A42
bit16= 0b0000101001000010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0A47literal: int
dec = 2631
hex16= 0x0A47
bit16= 0b0000101001000111
, 0x0A48literal: int
dec = 2632
hex16= 0x0A48
bit16= 0b0000101001001000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0A4Bliteral: int
dec = 2635
hex16= 0x0A4B
bit16= 0b0000101001001011
, 0x0A4Dliteral: int
dec = 2637
hex16= 0x0A4D
bit16= 0b0000101001001101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0A70literal: int
dec = 2672
hex16= 0x0A70
bit16= 0b0000101001110000
, 0x0A71literal: int
dec = 2673
hex16= 0x0A71
bit16= 0b0000101001110001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0A81literal: int
dec = 2689
hex16= 0x0A81
bit16= 0b0000101010000001
, 0x0A82literal: int
dec = 2690
hex16= 0x0A82
bit16= 0b0000101010000010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0ABCliteral: int
dec = 2748
hex16= 0x0ABC
bit16= 0b0000101010111100
, 0x0ABCliteral: int
dec = 2748
hex16= 0x0ABC
bit16= 0b0000101010111100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0AC1literal: int
dec = 2753
hex16= 0x0AC1
bit16= 0b0000101011000001
, 0x0AC5literal: int
dec = 2757
hex16= 0x0AC5
bit16= 0b0000101011000101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0AC7literal: int
dec = 2759
hex16= 0x0AC7
bit16= 0b0000101011000111
, 0x0AC8literal: int
dec = 2760
hex16= 0x0AC8
bit16= 0b0000101011001000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0ACDliteral: int
dec = 2765
hex16= 0x0ACD
bit16= 0b0000101011001101
, 0x0ACDliteral: int
dec = 2765
hex16= 0x0ACD
bit16= 0b0000101011001101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0AE2literal: int
dec = 2786
hex16= 0x0AE2
bit16= 0b0000101011100010
, 0x0AE3literal: int
dec = 2787
hex16= 0x0AE3
bit16= 0b0000101011100011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0B01literal: int
dec = 2817
hex16= 0x0B01
bit16= 0b0000101100000001
, 0x0B01literal: int
dec = 2817
hex16= 0x0B01
bit16= 0b0000101100000001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0B3Cliteral: int
dec = 2876
hex16= 0x0B3C
bit16= 0b0000101100111100
, 0x0B3Cliteral: int
dec = 2876
hex16= 0x0B3C
bit16= 0b0000101100111100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0B3Fliteral: int
dec = 2879
hex16= 0x0B3F
bit16= 0b0000101100111111
, 0x0B3Fliteral: int
dec = 2879
hex16= 0x0B3F
bit16= 0b0000101100111111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0B41literal: int
dec = 2881
hex16= 0x0B41
bit16= 0b0000101101000001
, 0x0B43literal: int
dec = 2883
hex16= 0x0B43
bit16= 0b0000101101000011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0B4Dliteral: int
dec = 2893
hex16= 0x0B4D
bit16= 0b0000101101001101
, 0x0B4Dliteral: int
dec = 2893
hex16= 0x0B4D
bit16= 0b0000101101001101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0B56literal: int
dec = 2902
hex16= 0x0B56
bit16= 0b0000101101010110
, 0x0B56literal: int
dec = 2902
hex16= 0x0B56
bit16= 0b0000101101010110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0B82literal: int
dec = 2946
hex16= 0x0B82
bit16= 0b0000101110000010
, 0x0B82literal: int
dec = 2946
hex16= 0x0B82
bit16= 0b0000101110000010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0BC0literal: int
dec = 3008
hex16= 0x0BC0
bit16= 0b0000101111000000
, 0x0BC0literal: int
dec = 3008
hex16= 0x0BC0
bit16= 0b0000101111000000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0BCDliteral: int
dec = 3021
hex16= 0x0BCD
bit16= 0b0000101111001101
, 0x0BCDliteral: int
dec = 3021
hex16= 0x0BCD
bit16= 0b0000101111001101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0C3Eliteral: int
dec = 3134
hex16= 0x0C3E
bit16= 0b0000110000111110
, 0x0C40literal: int
dec = 3136
hex16= 0x0C40
bit16= 0b0000110001000000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0C46literal: int
dec = 3142
hex16= 0x0C46
bit16= 0b0000110001000110
, 0x0C48literal: int
dec = 3144
hex16= 0x0C48
bit16= 0b0000110001001000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0C4Aliteral: int
dec = 3146
hex16= 0x0C4A
bit16= 0b0000110001001010
, 0x0C4Dliteral: int
dec = 3149
hex16= 0x0C4D
bit16= 0b0000110001001101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0C55literal: int
dec = 3157
hex16= 0x0C55
bit16= 0b0000110001010101
, 0x0C56literal: int
dec = 3158
hex16= 0x0C56
bit16= 0b0000110001010110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0CBCliteral: int
dec = 3260
hex16= 0x0CBC
bit16= 0b0000110010111100
, 0x0CBCliteral: int
dec = 3260
hex16= 0x0CBC
bit16= 0b0000110010111100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0CBFliteral: int
dec = 3263
hex16= 0x0CBF
bit16= 0b0000110010111111
, 0x0CBFliteral: int
dec = 3263
hex16= 0x0CBF
bit16= 0b0000110010111111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0CC6literal: int
dec = 3270
hex16= 0x0CC6
bit16= 0b0000110011000110
, 0x0CC6literal: int
dec = 3270
hex16= 0x0CC6
bit16= 0b0000110011000110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0CCCliteral: int
dec = 3276
hex16= 0x0CCC
bit16= 0b0000110011001100
, 0x0CCDliteral: int
dec = 3277
hex16= 0x0CCD
bit16= 0b0000110011001101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0CE2literal: int
dec = 3298
hex16= 0x0CE2
bit16= 0b0000110011100010
, 0x0CE3literal: int
dec = 3299
hex16= 0x0CE3
bit16= 0b0000110011100011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0D41literal: int
dec = 3393
hex16= 0x0D41
bit16= 0b0000110101000001
, 0x0D43literal: int
dec = 3395
hex16= 0x0D43
bit16= 0b0000110101000011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0D4Dliteral: int
dec = 3405
hex16= 0x0D4D
bit16= 0b0000110101001101
, 0x0D4Dliteral: int
dec = 3405
hex16= 0x0D4D
bit16= 0b0000110101001101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0DCAliteral: int
dec = 3530
hex16= 0x0DCA
bit16= 0b0000110111001010
, 0x0DCAliteral: int
dec = 3530
hex16= 0x0DCA
bit16= 0b0000110111001010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0DD2literal: int
dec = 3538
hex16= 0x0DD2
bit16= 0b0000110111010010
, 0x0DD4literal: int
dec = 3540
hex16= 0x0DD4
bit16= 0b0000110111010100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0DD6literal: int
dec = 3542
hex16= 0x0DD6
bit16= 0b0000110111010110
, 0x0DD6literal: int
dec = 3542
hex16= 0x0DD6
bit16= 0b0000110111010110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0E31literal: int
dec = 3633
hex16= 0x0E31
bit16= 0b0000111000110001
, 0x0E31literal: int
dec = 3633
hex16= 0x0E31
bit16= 0b0000111000110001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0E34literal: int
dec = 3636
hex16= 0x0E34
bit16= 0b0000111000110100
, 0x0E3Aliteral: int
dec = 3642
hex16= 0x0E3A
bit16= 0b0000111000111010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0E47literal: int
dec = 3655
hex16= 0x0E47
bit16= 0b0000111001000111
, 0x0E4Eliteral: int
dec = 3662
hex16= 0x0E4E
bit16= 0b0000111001001110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0EB1literal: int
dec = 3761
hex16= 0x0EB1
bit16= 0b0000111010110001
, 0x0EB1literal: int
dec = 3761
hex16= 0x0EB1
bit16= 0b0000111010110001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0EB4literal: int
dec = 3764
hex16= 0x0EB4
bit16= 0b0000111010110100
, 0x0EB9literal: int
dec = 3769
hex16= 0x0EB9
bit16= 0b0000111010111001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0EBBliteral: int
dec = 3771
hex16= 0x0EBB
bit16= 0b0000111010111011
, 0x0EBCliteral: int
dec = 3772
hex16= 0x0EBC
bit16= 0b0000111010111100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0EC8literal: int
dec = 3784
hex16= 0x0EC8
bit16= 0b0000111011001000
, 0x0ECDliteral: int
dec = 3789
hex16= 0x0ECD
bit16= 0b0000111011001101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0F18literal: int
dec = 3864
hex16= 0x0F18
bit16= 0b0000111100011000
, 0x0F19literal: int
dec = 3865
hex16= 0x0F19
bit16= 0b0000111100011001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0F35literal: int
dec = 3893
hex16= 0x0F35
bit16= 0b0000111100110101
, 0x0F35literal: int
dec = 3893
hex16= 0x0F35
bit16= 0b0000111100110101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0F37literal: int
dec = 3895
hex16= 0x0F37
bit16= 0b0000111100110111
, 0x0F37literal: int
dec = 3895
hex16= 0x0F37
bit16= 0b0000111100110111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0F39literal: int
dec = 3897
hex16= 0x0F39
bit16= 0b0000111100111001
, 0x0F39literal: int
dec = 3897
hex16= 0x0F39
bit16= 0b0000111100111001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0F71literal: int
dec = 3953
hex16= 0x0F71
bit16= 0b0000111101110001
, 0x0F7Eliteral: int
dec = 3966
hex16= 0x0F7E
bit16= 0b0000111101111110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0F80literal: int
dec = 3968
hex16= 0x0F80
bit16= 0b0000111110000000
, 0x0F84literal: int
dec = 3972
hex16= 0x0F84
bit16= 0b0000111110000100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0F86literal: int
dec = 3974
hex16= 0x0F86
bit16= 0b0000111110000110
, 0x0F87literal: int
dec = 3975
hex16= 0x0F87
bit16= 0b0000111110000111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0F90literal: int
dec = 3984
hex16= 0x0F90
bit16= 0b0000111110010000
, 0x0F97literal: int
dec = 3991
hex16= 0x0F97
bit16= 0b0000111110010111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0F99literal: int
dec = 3993
hex16= 0x0F99
bit16= 0b0000111110011001
, 0x0FBCliteral: int
dec = 4028
hex16= 0x0FBC
bit16= 0b0000111110111100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x0FC6literal: int
dec = 4038
hex16= 0x0FC6
bit16= 0b0000111111000110
, 0x0FC6literal: int
dec = 4038
hex16= 0x0FC6
bit16= 0b0000111111000110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x102Dliteral: int
dec = 4141
hex16= 0x102D
bit16= 0b0001000000101101
, 0x1030literal: int
dec = 4144
hex16= 0x1030
bit16= 0b0001000000110000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1032literal: int
dec = 4146
hex16= 0x1032
bit16= 0b0001000000110010
, 0x1032literal: int
dec = 4146
hex16= 0x1032
bit16= 0b0001000000110010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1036literal: int
dec = 4150
hex16= 0x1036
bit16= 0b0001000000110110
, 0x1037literal: int
dec = 4151
hex16= 0x1037
bit16= 0b0001000000110111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1039literal: int
dec = 4153
hex16= 0x1039
bit16= 0b0001000000111001
, 0x1039literal: int
dec = 4153
hex16= 0x1039
bit16= 0b0001000000111001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1058literal: int
dec = 4184
hex16= 0x1058
bit16= 0b0001000001011000
, 0x1059literal: int
dec = 4185
hex16= 0x1059
bit16= 0b0001000001011001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1160literal: int
dec = 4448
hex16= 0x1160
bit16= 0b0001000101100000
, 0x11FFliteral: int
dec = 4607
hex16= 0x11FF
bit16= 0b0001000111111111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x135Fliteral: int
dec = 4959
hex16= 0x135F
bit16= 0b0001001101011111
, 0x135Fliteral: int
dec = 4959
hex16= 0x135F
bit16= 0b0001001101011111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1712literal: int
dec = 5906
hex16= 0x1712
bit16= 0b0001011100010010
, 0x1714literal: int
dec = 5908
hex16= 0x1714
bit16= 0b0001011100010100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1732literal: int
dec = 5938
hex16= 0x1732
bit16= 0b0001011100110010
, 0x1734literal: int
dec = 5940
hex16= 0x1734
bit16= 0b0001011100110100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1752literal: int
dec = 5970
hex16= 0x1752
bit16= 0b0001011101010010
, 0x1753literal: int
dec = 5971
hex16= 0x1753
bit16= 0b0001011101010011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1772literal: int
dec = 6002
hex16= 0x1772
bit16= 0b0001011101110010
, 0x1773literal: int
dec = 6003
hex16= 0x1773
bit16= 0b0001011101110011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x17B4literal: int
dec = 6068
hex16= 0x17B4
bit16= 0b0001011110110100
, 0x17B5literal: int
dec = 6069
hex16= 0x17B5
bit16= 0b0001011110110101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x17B7literal: int
dec = 6071
hex16= 0x17B7
bit16= 0b0001011110110111
, 0x17BDliteral: int
dec = 6077
hex16= 0x17BD
bit16= 0b0001011110111101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x17C6literal: int
dec = 6086
hex16= 0x17C6
bit16= 0b0001011111000110
, 0x17C6literal: int
dec = 6086
hex16= 0x17C6
bit16= 0b0001011111000110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x17C9literal: int
dec = 6089
hex16= 0x17C9
bit16= 0b0001011111001001
, 0x17D3literal: int
dec = 6099
hex16= 0x17D3
bit16= 0b0001011111010011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x17DDliteral: int
dec = 6109
hex16= 0x17DD
bit16= 0b0001011111011101
, 0x17DDliteral: int
dec = 6109
hex16= 0x17DD
bit16= 0b0001011111011101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x180Bliteral: int
dec = 6155
hex16= 0x180B
bit16= 0b0001100000001011
, 0x180Dliteral: int
dec = 6157
hex16= 0x180D
bit16= 0b0001100000001101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x18A9literal: int
dec = 6313
hex16= 0x18A9
bit16= 0b0001100010101001
, 0x18A9literal: int
dec = 6313
hex16= 0x18A9
bit16= 0b0001100010101001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1920literal: int
dec = 6432
hex16= 0x1920
bit16= 0b0001100100100000
, 0x1922literal: int
dec = 6434
hex16= 0x1922
bit16= 0b0001100100100010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1927literal: int
dec = 6439
hex16= 0x1927
bit16= 0b0001100100100111
, 0x1928literal: int
dec = 6440
hex16= 0x1928
bit16= 0b0001100100101000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1932literal: int
dec = 6450
hex16= 0x1932
bit16= 0b0001100100110010
, 0x1932literal: int
dec = 6450
hex16= 0x1932
bit16= 0b0001100100110010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1939literal: int
dec = 6457
hex16= 0x1939
bit16= 0b0001100100111001
, 0x193Bliteral: int
dec = 6459
hex16= 0x193B
bit16= 0b0001100100111011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1A17literal: int
dec = 6679
hex16= 0x1A17
bit16= 0b0001101000010111
, 0x1A18literal: int
dec = 6680
hex16= 0x1A18
bit16= 0b0001101000011000
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1B00literal: int
dec = 6912
hex16= 0x1B00
bit16= 0b0001101100000000
, 0x1B03literal: int
dec = 6915
hex16= 0x1B03
bit16= 0b0001101100000011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1B34literal: int
dec = 6964
hex16= 0x1B34
bit16= 0b0001101100110100
, 0x1B34literal: int
dec = 6964
hex16= 0x1B34
bit16= 0b0001101100110100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1B36literal: int
dec = 6966
hex16= 0x1B36
bit16= 0b0001101100110110
, 0x1B3Aliteral: int
dec = 6970
hex16= 0x1B3A
bit16= 0b0001101100111010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1B3Cliteral: int
dec = 6972
hex16= 0x1B3C
bit16= 0b0001101100111100
, 0x1B3Cliteral: int
dec = 6972
hex16= 0x1B3C
bit16= 0b0001101100111100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1B42literal: int
dec = 6978
hex16= 0x1B42
bit16= 0b0001101101000010
, 0x1B42literal: int
dec = 6978
hex16= 0x1B42
bit16= 0b0001101101000010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1B6Bliteral: int
dec = 7019
hex16= 0x1B6B
bit16= 0b0001101101101011
, 0x1B73literal: int
dec = 7027
hex16= 0x1B73
bit16= 0b0001101101110011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1DC0literal: int
dec = 7616
hex16= 0x1DC0
bit16= 0b0001110111000000
, 0x1DCAliteral: int
dec = 7626
hex16= 0x1DCA
bit16= 0b0001110111001010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1DFEliteral: int
dec = 7678
hex16= 0x1DFE
bit16= 0b0001110111111110
, 0x1DFFliteral: int
dec = 7679
hex16= 0x1DFF
bit16= 0b0001110111111111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x200Bliteral: int
dec = 8203
hex16= 0x200B
bit16= 0b0010000000001011
, 0x200Fliteral: int
dec = 8207
hex16= 0x200F
bit16= 0b0010000000001111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x202Aliteral: int
dec = 8234
hex16= 0x202A
bit16= 0b0010000000101010
, 0x202Eliteral: int
dec = 8238
hex16= 0x202E
bit16= 0b0010000000101110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x2060literal: int
dec = 8288
hex16= 0x2060
bit16= 0b0010000001100000
, 0x2063literal: int
dec = 8291
hex16= 0x2063
bit16= 0b0010000001100011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x206Aliteral: int
dec = 8298
hex16= 0x206A
bit16= 0b0010000001101010
, 0x206Fliteral: int
dec = 8303
hex16= 0x206F
bit16= 0b0010000001101111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x20D0literal: int
dec = 8400
hex16= 0x20D0
bit16= 0b0010000011010000
, 0x20EFliteral: int
dec = 8431
hex16= 0x20EF
bit16= 0b0010000011101111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x302Aliteral: int
dec = 12330
hex16= 0x302A
bit16= 0b0011000000101010
, 0x302Fliteral: int
dec = 12335
hex16= 0x302F
bit16= 0b0011000000101111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x3099literal: int
dec = 12441
hex16= 0x3099
bit16= 0b0011000010011001
, 0x309Aliteral: int
dec = 12442
hex16= 0x309A
bit16= 0b0011000010011010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xA806literal: int
dec = 43014
hex32= 0x0000A806
bit32= 0b00000000000000001010100000000110
, 0xA806literal: int
dec = 43014
hex32= 0x0000A806
bit32= 0b00000000000000001010100000000110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xA80Bliteral: int
dec = 43019
hex32= 0x0000A80B
bit32= 0b00000000000000001010100000001011
, 0xA80Bliteral: int
dec = 43019
hex32= 0x0000A80B
bit32= 0b00000000000000001010100000001011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xA825literal: int
dec = 43045
hex32= 0x0000A825
bit32= 0b00000000000000001010100000100101
, 0xA826literal: int
dec = 43046
hex32= 0x0000A826
bit32= 0b00000000000000001010100000100110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xFB1Eliteral: int
dec = 64286
hex32= 0x0000FB1E
bit32= 0b00000000000000001111101100011110
, 0xFB1Eliteral: int
dec = 64286
hex32= 0x0000FB1E
bit32= 0b00000000000000001111101100011110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xFE00literal: int
dec = 65024
hex32= 0x0000FE00
bit32= 0b00000000000000001111111000000000
, 0xFE0Fliteral: int
dec = 65039
hex32= 0x0000FE0F
bit32= 0b00000000000000001111111000001111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xFE20literal: int
dec = 65056
hex32= 0x0000FE20
bit32= 0b00000000000000001111111000100000
, 0xFE23literal: int
dec = 65059
hex32= 0x0000FE23
bit32= 0b00000000000000001111111000100011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xFEFFliteral: int
dec = 65279
hex32= 0x0000FEFF
bit32= 0b00000000000000001111111011111111
, 0xFEFFliteral: int
dec = 65279
hex32= 0x0000FEFF
bit32= 0b00000000000000001111111011111111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xFFF9literal: int
dec = 65529
hex32= 0x0000FFF9
bit32= 0b00000000000000001111111111111001
, 0xFFFBliteral: int
dec = 65531
hex32= 0x0000FFFB
bit32= 0b00000000000000001111111111111011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x10A01literal: int
dec = 68097
hex32= 0x00010A01
bit32= 0b00000000000000010000101000000001
, 0x10A03literal: int
dec = 68099
hex32= 0x00010A03
bit32= 0b00000000000000010000101000000011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x10A05literal: int
dec = 68101
hex32= 0x00010A05
bit32= 0b00000000000000010000101000000101
, 0x10A06literal: int
dec = 68102
hex32= 0x00010A06
bit32= 0b00000000000000010000101000000110
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x10A0Cliteral: int
dec = 68108
hex32= 0x00010A0C
bit32= 0b00000000000000010000101000001100
, 0x10A0Fliteral: int
dec = 68111
hex32= 0x00010A0F
bit32= 0b00000000000000010000101000001111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x10A38literal: int
dec = 68152
hex32= 0x00010A38
bit32= 0b00000000000000010000101000111000
, 0x10A3Aliteral: int
dec = 68154
hex32= 0x00010A3A
bit32= 0b00000000000000010000101000111010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x10A3Fliteral: int
dec = 68159
hex32= 0x00010A3F
bit32= 0b00000000000000010000101000111111
, 0x10A3Fliteral: int
dec = 68159
hex32= 0x00010A3F
bit32= 0b00000000000000010000101000111111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1D167literal: int
dec = 119143
hex32= 0x0001D167
bit32= 0b00000000000000011101000101100111
, 0x1D169literal: int
dec = 119145
hex32= 0x0001D169
bit32= 0b00000000000000011101000101101001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1D173literal: int
dec = 119155
hex32= 0x0001D173
bit32= 0b00000000000000011101000101110011
, 0x1D182literal: int
dec = 119170
hex32= 0x0001D182
bit32= 0b00000000000000011101000110000010
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1D185literal: int
dec = 119173
hex32= 0x0001D185
bit32= 0b00000000000000011101000110000101
, 0x1D18Bliteral: int
dec = 119179
hex32= 0x0001D18B
bit32= 0b00000000000000011101000110001011
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1D1AAliteral: int
dec = 119210
hex32= 0x0001D1AA
bit32= 0b00000000000000011101000110101010
, 0x1D1ADliteral: int
dec = 119213
hex32= 0x0001D1AD
bit32= 0b00000000000000011101000110101101
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0x1D242literal: int
dec = 119362
hex32= 0x0001D242
bit32= 0b00000000000000011101001001000010
, 0x1D244literal: int
dec = 119364
hex32= 0x0001D244
bit32= 0b00000000000000011101001001000100
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xE0001literal: int
dec = 917505
hex32= 0x000E0001
bit32= 0b00000000000011100000000000000001
, 0xE0001literal: int
dec = 917505
hex32= 0x000E0001
bit32= 0b00000000000011100000000000000001
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xE0020literal: int
dec = 917536
hex32= 0x000E0020
bit32= 0b00000000000011100000000000100000
, 0xE007Fliteral: int
dec = 917631
hex32= 0x000E007F
bit32= 0b00000000000011100000000001111111
), singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(0xE0100literal: int
dec = 917760
hex32= 0x000E0100
bit32= 0b00000000000011100000000100000000
, 0xE01EFliteral: int
dec = 917999
hex32= 0x000E01EF
bit32= 0b00000000000011100000000111101111
) ]std/core/types/Nil: forall<a> list<a>)
} //-------------------------------------------------------------- // Range trees //-------------------------------------------------------------- // Type of range trees type rtreestd/text/unicode/rtree: V { Tipstd/text/unicode/Tip: rtree Binstd/text/unicode/Bin: (lo : int, hi : int, left : rtree, right : rtree) -> rtree( lo : intstd/core/types/int: V, hi : intstd/core/types/int: V, left : rtreestd/text/unicode/rtree: V, right : rtreestd/text/unicode/rtree: V ) } // Is a value contained in a range tree? fun containsstd/text/unicode/contains: (t : rtree, i : int) -> bool( tt: rtree : rtreestd/text/unicode/rtree: V, ii: int : intstd/core/types/int: V )result: -> total bool : boolstd/core/types/bool: V { match(tt: rtree) { Tipstd/text/unicode/Tip: rtree -> Truestd/core/types/True: bool Binstd/text/unicode/Bin: (lo : int, hi : int, left : rtree, right : rtree) -> rtree(lolo: int,hihi: int,ll: rtree,rr: rtree) -> { if (ii: int <std/core/int/(<): (x : int, y : int) -> bool lolo: int ||std/core/types/(||): (x : bool, y : bool) -> bool ii: int >std/core/int/(>): (x : int, y : int) -> bool hihi: int) then Falsestd/core/types/False: bool else ll: rtree.containsstd/text/unicode/contains: (t : rtree, i : int) -> bool(ii: int) ||std/core/types/(||): (x : bool, y : bool) -> bool rr: rtree.containsstd/text/unicode/contains: (t : rtree, i : int) -> bool(ii: int) } } } fun build-rtreestd/text/unicode/build-rtree: (xs : list<rtree>) -> rtree( xsxs: list<rtree> : liststd/core/types/list: V -> V<rtreestd/text/unicode/rtree: V> )result: -> total rtree : rtreestd/text/unicode/rtree: V { xsxs: list<rtree>.combinestd/text/unicode/combine: (xs : list<rtree>) -> rtree } fun singlestd/text/unicode/single: (lo : int, hi : int) -> rtree(lolo: int,hihi: int)result: -> total rtree { Binstd/text/unicode/Bin: (lo : int, hi : int, left : rtree, right : rtree) -> rtree(lolo: int,hihi: int,Tipstd/text/unicode/Tip: rtree,Tipstd/text/unicode/Tip: rtree) } fun binstd/text/unicode/bin: (x : rtree, y : rtree) -> rtree(xx: rtree,yy: rtree)result: -> total rtree { match((std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)xx: rtree,yy: rtree)std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)) { (std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)Binstd/text/unicode/Bin: (lo : int, hi : int, left : rtree, right : rtree) -> rtree(xloxlo: int,xhixhi: int),Binstd/text/unicode/Bin: (lo : int, hi : int, left : rtree, right : rtree) -> rtree(yloylo: int,yhiyhi: int))std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b) -> Binstd/text/unicode/Bin: (lo : int, hi : int, left : rtree, right : rtree) -> rtree(minstd/core/int/min: (i : int, j : int) -> int(xloxlo: int,yloylo: int),maxstd/core/int/max: (i : int, j : int) -> int(xhixhi: int,yhiyhi: int),xx: rtree,yy: rtree) (std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b)Tipstd/text/unicode/Tip: rtree,_)std/core/types/Tuple2: forall<a,b> (fst : a, snd : b) -> (a, b) -> yy: rtree _ -> xx: rtree } } fun combinestd/text/unicode/combine: (xs : list<rtree>) -> rtree( xsxs: list<rtree> : liststd/core/types/list: V -> V<rtreestd/text/unicode/rtree: V> )result: -> total rtree : rtreestd/text/unicode/rtree: V { match (combine-pairsstd/text/unicode/combine-pairs: (xs : list<rtree>) -> list<rtree>(xsxs: list<rtree>)) { Nilstd/core/types/Nil: forall<a> list<a> -> Tipstd/text/unicode/Tip: rtree Consstd/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>(xx: rtree,Nilstd/core/types/Nil: forall<a> list<a>) -> xx: rtree ysys: list<rtree> -> combinestd/text/unicode/combine: (xs : list<rtree>) -> rtree(pretend-decreasingstd/core/undiv/pretend-decreasing: (x : list<rtree>) -> list<rtree>(ysys: list<rtree>)) } } fun combine-pairsstd/text/unicode/combine-pairs: (xs : list<rtree>) -> list<rtree>( xsxs: list<rtree> : liststd/core/types/list: V -> V<rtreestd/text/unicode/rtree: V> )result: -> total list<rtree> : liststd/core/types/list: V -> V<rtreestd/text/unicode/rtree: V> { match(xsxs: list<rtree>) { Consstd/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>(xx: rtree,Consstd/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>(yy: rtree,restrest: list<rtree>)) -> Consstd/core/types/Cons: forall<a> (head : a, tail : list<a>) -> list<a>( binstd/text/unicode/bin: (x : rtree, y : rtree) -> rtree(xx: rtree,yy: rtree), combine-pairsstd/text/unicode/combine-pairs: (xs : list<rtree>) -> list<rtree>(restrest: list<rtree>) ) _ -> xsxs: list<rtree> } }