Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
# meta operators: meta<op>
# ! EXCLAMATION MARK
# factorial
# " QUOTATION MARK
# (list of characters)
# # NUMBER SIGN
# $ DOLLAR SIGN
# meta: raw function
# % PERCENT SIGN
# modulus
# & AMPERSAND
# concat list [a, b]
# ' APOSTROPHE
# differences/derivative
# ( LEFT PARENTHESIS
# ) RIGHT PARENTHESIS
# * ASTERISK
# exponentiation
# + PLUS SIGN
# addition
# , COMMA
# pair [a, b]
# - HYPHEN-MINUS
# glue?
# . FULL STOP
# terminate?
# / SOLIDUS
# quotient group?
# : COLON
# variable assignment?
# ; SEMICOLON
# < LESS-THAN SIGN
# less than
# = EQUALS SIGN
# equal to
# > GREATER-THAN SIGN
# greater than
# ? QUESTION MARK
# truthy?
# @ COMMERCIAL AT
# indexing?
# [ LEFT SQUARE BRACKET
# \ REVERSE SOLIDUS
# inverted whatever / does
# ] RIGHT SQUARE BRACKET
# ^ CIRCUMFLEX ACCENT
# xor?
# _ LOW LINE
# (word?)
# ` GRAVE ACCENT
# { LEFT CURLY BRACKET
# | VERTICAL LINE
# divides
# } RIGHT CURLY BRACKET
# ~ TILDE
# negation (numeric)
# ¬ NOT SIGN
# negation (logical)
# ± PLUS-MINUS SIGN
# two element list of [a + b, a - b]
# × MULTIPLICATION SIGN
# multiplication
# ÷ DIVISION SIGN
# division
# ϶ GREEK REVERSED LUNATE EPSILON SYMBOL
# ؆ ARABIC-INDIC CUBE ROOT
# \u{606}
# ؇ ARABIC-INDIC FOURTH ROOT
# \u{607}
# ؈ ARABIC RAY
# \u{608}
# ⁄ FRACTION SLASH
# Rational division
# ⁒ COMMERCIAL MINUS SIGN
# monus?
# ⁺ SUPERSCRIPT PLUS SIGN
# ⁻ SUPERSCRIPT MINUS
# ⁼ SUPERSCRIPT EQUALS SIGN
# ₊ SUBSCRIPT PLUS SIGN
# ₋ SUBSCRIPT MINUS
# ₌ SUBSCRIPT EQUALS SIGN
# ℘ SCRIPT CAPITAL P
# ⅀ DOUBLE-STRUCK N-ARY SUMMATION
# ⅁ TURNED SANS-SERIF CAPITAL G
# ⅂ TURNED SANS-SERIF CAPITAL L
# ⅃ REVERSED SANS-SERIF CAPITAL L
# ⅄ TURNED SANS-SERIF CAPITAL Y
# ⅋ TURNED AMPERSAND
# reverse concat pair [b, a]
# ← LEFTWARDS ARROW
# map (reversed arguments)
# ↑ UPWARDS ARROW
# move top of stack to bottom
# → RIGHTWARDS ARROW
# map
# ↓ DOWNWARDS ARROW
# move bottom of stack to top
# ↔ LEFT RIGHT ARROW
# stack: swap top two
# ↚ LEFTWARDS ARROW WITH STROKE
# ↛ RIGHTWARDS ARROW WITH STROKE
# ↠ RIGHTWARDS TWO HEADED ARROW
# ↣ RIGHTWARDS ARROW WITH TAIL
# ↦ RIGHTWARDS ARROW FROM BAR
# ↮ LEFT RIGHT ARROW WITH STROKE
# ⇎ LEFT RIGHT DOUBLE ARROW WITH STROKE
# ⇏ RIGHTWARDS DOUBLE ARROW WITH STROKE
# ⇒ RIGHTWARDS DOUBLE ARROW
# ⇔ LEFT RIGHT DOUBLE ARROW
# ⇴ RIGHT ARROW WITH SMALL CIRCLE
# ⇵ DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
# ⇶ THREE RIGHTWARDS ARROWS
# ⇷ LEFTWARDS ARROW WITH VERTICAL STROKE
# ⇸ RIGHTWARDS ARROW WITH VERTICAL STROKE
# ⇹ LEFT RIGHT ARROW WITH VERTICAL STROKE
# ⇺ LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
# ⇻ RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
# ⇼ LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
# ⇽ LEFTWARDS OPEN-HEADED ARROW
# ⇾ RIGHTWARDS OPEN-HEADED ARROW
# ⇿ LEFT RIGHT OPEN-HEADED ARROW
# ∀ FOR ALL
# ∁ COMPLEMENT
# ∂ PARTIAL DIFFERENTIAL
# ∃ THERE EXISTS
# ∄ THERE DOES NOT EXIST
# ∅ EMPTY SET
# ∆ INCREMENT
# ∇ NABLA
# ∈ ELEMENT OF
# ∉ NOT AN ELEMENT OF
# ∊ SMALL ELEMENT OF
# ∋ CONTAINS AS MEMBER
# ∌ DOES NOT CONTAIN AS MEMBER
# ∍ SMALL CONTAINS AS MEMBER
# ∎ END OF PROOF
# ∏ N-ARY PRODUCT
# ∐ N-ARY COPRODUCT
# ∑ N-ARY SUMMATION
# − MINUS SIGN
# ∓ MINUS-OR-PLUS SIGN
# ∔ DOT PLUS
# ∕ DIVISION SLASH
# ∖ SET MINUS
# ∗ ASTERISK OPERATOR
# ∘ RING OPERATOR
# ∙ BULLET OPERATOR
# √ SQUARE ROOT
# ∛ CUBE ROOT
# ∜ FOURTH ROOT
# ∝ PROPORTIONAL TO
# ∞ INFINITY
# ∟ RIGHT ANGLE
# ∠ ANGLE
# ∡ MEASURED ANGLE
# ∢ SPHERICAL ANGLE
# ∣ DIVIDES
# ∤ DOES NOT DIVIDE
# ∥ PARALLEL TO
# ∦ NOT PARALLEL TO
# ∧ LOGICAL AND
# ∨ LOGICAL OR
# ∩ INTERSECTION
# ∪ UNION
# ∫ INTEGRAL
# ∬ DOUBLE INTEGRAL
# ∭ TRIPLE INTEGRAL
# ∮ CONTOUR INTEGRAL
# ∯ SURFACE INTEGRAL
# ∰ VOLUME INTEGRAL
# ∱ CLOCKWISE INTEGRAL
# ∲ CLOCKWISE CONTOUR INTEGRAL
# ∳ ANTICLOCKWISE CONTOUR INTEGRAL
# ∴ THEREFORE
# ∵ BECAUSE
# ∶ RATIO
# ∷ PROPORTION
# ∸ DOT MINUS
# ∹ EXCESS
# ∺ GEOMETRIC PROPORTION
# ∻ HOMOTHETIC
# ∼ TILDE OPERATOR
# ∽ REVERSED TILDE
# ∾ INVERTED LAZY S
# ∿ SINE WAVE
# ≀ WREATH PRODUCT
# ≁ NOT TILDE
# ≂ MINUS TILDE
# ≃ ASYMPTOTICALLY EQUAL TO
# ≄ NOT ASYMPTOTICALLY EQUAL TO
# ≅ APPROXIMATELY EQUAL TO
# ≆ APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
# ≇ NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
# ≈ ALMOST EQUAL TO
# ≉ NOT ALMOST EQUAL TO
# ≊ ALMOST EQUAL OR EQUAL TO
# ≋ TRIPLE TILDE
# ≌ ALL EQUAL TO
# ≍ EQUIVALENT TO
# ≎ GEOMETRICALLY EQUIVALENT TO
# ≏ DIFFERENCE BETWEEN
# ≐ APPROACHES THE LIMIT
# ≑ GEOMETRICALLY EQUAL TO
# ≒ APPROXIMATELY EQUAL TO OR THE IMAGE OF
# ≓ IMAGE OF OR APPROXIMATELY EQUAL TO
# ≔ COLON EQUALS
# ≕ EQUALS COLON
# ≖ RING IN EQUAL TO
# ≗ RING EQUAL TO
# ≘ CORRESPONDS TO
# ≙ ESTIMATES
# ≚ EQUIANGULAR TO
# ≛ STAR EQUALS
# ≜ DELTA EQUAL TO
# ≝ EQUAL TO BY DEFINITION
# ≞ MEASURED BY
# ≟ QUESTIONED EQUAL TO
# ≠ NOT EQUAL TO
# ≡ IDENTICAL TO
# ≢ NOT IDENTICAL TO
# ≣ STRICTLY EQUIVALENT TO
# ≤ LESS-THAN OR EQUAL TO
# ≥ GREATER-THAN OR EQUAL TO
# ≦ LESS-THAN OVER EQUAL TO
# ≧ GREATER-THAN OVER EQUAL TO
# ≨ LESS-THAN BUT NOT EQUAL TO
# ≩ GREATER-THAN BUT NOT EQUAL TO
# ≪ MUCH LESS-THAN
# ≫ MUCH GREATER-THAN
# ≬ BETWEEN
# ≭ NOT EQUIVALENT TO
# ≮ NOT LESS-THAN
# ≯ NOT GREATER-THAN
# ≰ NEITHER LESS-THAN NOR EQUAL TO
# ≱ NEITHER GREATER-THAN NOR EQUAL TO
# ≲ LESS-THAN OR EQUIVALENT TO
# ≳ GREATER-THAN OR EQUIVALENT TO
# ≴ NEITHER LESS-THAN NOR EQUIVALENT TO
# ≵ NEITHER GREATER-THAN NOR EQUIVALENT TO
# ≶ LESS-THAN OR GREATER-THAN
# ≷ GREATER-THAN OR LESS-THAN
# ≸ NEITHER LESS-THAN NOR GREATER-THAN
# ≹ NEITHER GREATER-THAN NOR LESS-THAN
# ≺ PRECEDES
# ≻ SUCCEEDS
# ≼ PRECEDES OR EQUAL TO
# ≽ SUCCEEDS OR EQUAL TO
# ≾ PRECEDES OR EQUIVALENT TO
# ≿ SUCCEEDS OR EQUIVALENT TO
# ⊀ DOES NOT PRECEDE
# ⊁ DOES NOT SUCCEED
# ⊂ SUBSET OF
# ⊃ SUPERSET OF
# ⊄ NOT A SUBSET OF
# ⊅ NOT A SUPERSET OF
# ⊆ SUBSET OF OR EQUAL TO
# ⊇ SUPERSET OF OR EQUAL TO
# ⊈ NEITHER A SUBSET OF NOR EQUAL TO
# ⊉ NEITHER A SUPERSET OF NOR EQUAL TO
# ⊊ SUBSET OF WITH NOT EQUAL TO
# ⊋ SUPERSET OF WITH NOT EQUAL TO
# ⊌ MULTISET
# ⊍ MULTISET MULTIPLICATION
# ⊎ MULTISET UNION
# ⊏ SQUARE IMAGE OF
# ⊐ SQUARE ORIGINAL OF
# ⊑ SQUARE IMAGE OF OR EQUAL TO
# ⊒ SQUARE ORIGINAL OF OR EQUAL TO
# ⊓ SQUARE CAP
# ⊔ SQUARE CUP
# ⊕ CIRCLED PLUS
# ⊖ CIRCLED MINUS
# ⊗ CIRCLED TIMES
# ⊘ CIRCLED DIVISION SLASH
# ⊙ CIRCLED DOT OPERATOR
# ⊚ CIRCLED RING OPERATOR
# ⊛ CIRCLED ASTERISK OPERATOR
# ⊜ CIRCLED EQUALS
# ⊝ CIRCLED DASH
# ⊞ SQUARED PLUS
# ⊟ SQUARED MINUS
# ⊠ SQUARED TIMES
# ⊡ SQUARED DOT OPERATOR
# ⊢ RIGHT TACK
# ⊣ LEFT TACK
# ⊤ DOWN TACK
# ⊥ UP TACK
# ⊦ ASSERTION
# ⊧ MODELS
# ⊨ TRUE
# ⊩ FORCES
# ⊪ TRIPLE VERTICAL BAR RIGHT TURNSTILE
# ⊫ DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
# ⊬ DOES NOT PROVE
# ⊭ NOT TRUE
# ⊮ DOES NOT FORCE
# ⊯ NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
# ⊰ PRECEDES UNDER RELATION
# ⊱ SUCCEEDS UNDER RELATION
# ⊲ NORMAL SUBGROUP OF
# ⊳ CONTAINS AS NORMAL SUBGROUP
# ⊴ NORMAL SUBGROUP OF OR EQUAL TO
# ⊵ CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
# ⊶ ORIGINAL OF
# ⊷ IMAGE OF
# ⊸ MULTIMAP
# ⊹ HERMITIAN CONJUGATE MATRIX
# ⊺ INTERCALATE
# ⊻ XOR
# ⊼ NAND
# ⊽ NOR
# ⊾ RIGHT ANGLE WITH ARC
# ⊿ RIGHT TRIANGLE
# ⋀ N-ARY LOGICAL AND
# ⋁ N-ARY LOGICAL OR
# ⋂ N-ARY INTERSECTION
# ⋃ N-ARY UNION
# ⋄ DIAMOND OPERATOR
# ⋅ DOT OPERATOR
# ⋆ STAR OPERATOR
# ⋇ DIVISION TIMES
# ⋈ BOWTIE
# ⋉ LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
# ⋊ RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
# ⋋ LEFT SEMIDIRECT PRODUCT
# ⋌ RIGHT SEMIDIRECT PRODUCT
# ⋍ REVERSED TILDE EQUALS
# ⋎ CURLY LOGICAL OR
# ⋏ CURLY LOGICAL AND
# ⋐ DOUBLE SUBSET
# ⋑ DOUBLE SUPERSET
# ⋒ DOUBLE INTERSECTION
# ⋓ DOUBLE UNION
# ⋔ PITCHFORK
# ⋕ EQUAL AND PARALLEL TO
# ⋖ LESS-THAN WITH DOT
# ⋗ GREATER-THAN WITH DOT
# ⋘ VERY MUCH LESS-THAN
# ⋙ VERY MUCH GREATER-THAN
# ⋚ LESS-THAN EQUAL TO OR GREATER-THAN
# ⋛ GREATER-THAN EQUAL TO OR LESS-THAN
# ⋜ EQUAL TO OR LESS-THAN
# ⋝ EQUAL TO OR GREATER-THAN
# ⋞ EQUAL TO OR PRECEDES
# ⋟ EQUAL TO OR SUCCEEDS
# ⋠ DOES NOT PRECEDE OR EQUAL
# ⋡ DOES NOT SUCCEED OR EQUAL
# ⋢ NOT SQUARE IMAGE OF OR EQUAL TO
# ⋣ NOT SQUARE ORIGINAL OF OR EQUAL TO
# ⋤ SQUARE IMAGE OF OR NOT EQUAL TO
# ⋥ SQUARE ORIGINAL OF OR NOT EQUAL TO
# ⋦ LESS-THAN BUT NOT EQUIVALENT TO
# ⋧ GREATER-THAN BUT NOT EQUIVALENT TO
# ⋨ PRECEDES BUT NOT EQUIVALENT TO
# ⋩ SUCCEEDS BUT NOT EQUIVALENT TO
# ⋪ NOT NORMAL SUBGROUP OF
# ⋫ DOES NOT CONTAIN AS NORMAL SUBGROUP
# ⋬ NOT NORMAL SUBGROUP OF OR EQUAL TO
# ⋭ DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
# ⋮ VERTICAL ELLIPSIS
# ⋯ MIDLINE HORIZONTAL ELLIPSIS
# ⋰ UP RIGHT DIAGONAL ELLIPSIS
# ⋱ DOWN RIGHT DIAGONAL ELLIPSIS
# ⋲ ELEMENT OF WITH LONG HORIZONTAL STROKE
# ⋳ ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
# ⋴ SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
# ⋵ ELEMENT OF WITH DOT ABOVE
# ⋶ ELEMENT OF WITH OVERBAR
# ⋷ SMALL ELEMENT OF WITH OVERBAR
# ⋸ ELEMENT OF WITH UNDERBAR
# ⋹ ELEMENT OF WITH TWO HORIZONTAL STROKES
# ⋺ CONTAINS WITH LONG HORIZONTAL STROKE
# ⋻ CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
# ⋼ SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
# ⋽ CONTAINS WITH OVERBAR
# ⋾ SMALL CONTAINS WITH OVERBAR
# ⋿ Z NOTATION BAG MEMBERSHIP
# ⌠ TOP HALF INTEGRAL
# ⌡ BOTTOM HALF INTEGRAL
# ⍼ RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
# ⎛ LEFT PARENTHESIS UPPER HOOK
# ⎜ LEFT PARENTHESIS EXTENSION
# ⎝ LEFT PARENTHESIS LOWER HOOK
# ⎞ RIGHT PARENTHESIS UPPER HOOK
# ⎟ RIGHT PARENTHESIS EXTENSION
# ⎠ RIGHT PARENTHESIS LOWER HOOK
# ⎡ LEFT SQUARE BRACKET UPPER CORNER
# ⎢ LEFT SQUARE BRACKET EXTENSION
# ⎣ LEFT SQUARE BRACKET LOWER CORNER
# ⎤ RIGHT SQUARE BRACKET UPPER CORNER
# ⎥ RIGHT SQUARE BRACKET EXTENSION
# ⎦ RIGHT SQUARE BRACKET LOWER CORNER
# ⎧ LEFT CURLY BRACKET UPPER HOOK
# ⎨ LEFT CURLY BRACKET MIDDLE PIECE
# ⎩ LEFT CURLY BRACKET LOWER HOOK
# ⎪ CURLY BRACKET EXTENSION
# ⎫ RIGHT CURLY BRACKET UPPER HOOK
# ⎬ RIGHT CURLY BRACKET MIDDLE PIECE
# ⎭ RIGHT CURLY BRACKET LOWER HOOK
# ⎮ INTEGRAL EXTENSION
# ⎯ HORIZONTAL LINE EXTENSION
# ⎰ UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
# ⎱ UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
# ⎲ SUMMATION TOP
# ⎳ SUMMATION BOTTOM
# ▷ WHITE RIGHT-POINTING TRIANGLE
# ◁ WHITE LEFT-POINTING TRIANGLE
# ◸ UPPER LEFT TRIANGLE
# ◹ UPPER RIGHT TRIANGLE
# ◺ LOWER LEFT TRIANGLE
# ◻ WHITE MEDIUM SQUARE
# ◼ BLACK MEDIUM SQUARE
# ◽ WHITE MEDIUM SMALL SQUARE
# ◾ BLACK MEDIUM SMALL SQUARE
# ◿ LOWER RIGHT TRIANGLE
# ♯ MUSIC SHARP SIGN
# ⟀ THREE DIMENSIONAL ANGLE
# ⟁ WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
# ⟂ PERPENDICULAR
# ⟃ OPEN SUBSET
# ⟄ OPEN SUPERSET
# ⟇ OR WITH DOT INSIDE
# ⟈ REVERSE SOLIDUS PRECEDING SUBSET
# ⟉ SUPERSET PRECEDING SOLIDUS
# ⟊ VERTICAL BAR WITH HORIZONTAL STROKE
# ⟌ LONG DIVISION
# ⟎ SQUARED LOGICAL AND
# ⟏ SQUARED LOGICAL OR
# ⟐ WHITE DIAMOND WITH CENTRED DOT
# ⟑ AND WITH DOT
# ⟒ ELEMENT OF OPENING UPWARDS
# ⟓ LOWER RIGHT CORNER WITH DOT
# ⟔ UPPER LEFT CORNER WITH DOT
# ⟕ LEFT OUTER JOIN
# ⟖ RIGHT OUTER JOIN
# ⟗ FULL OUTER JOIN
# ⟘ LARGE UP TACK
# ⟙ LARGE DOWN TACK
# ⟚ LEFT AND RIGHT DOUBLE TURNSTILE
# ⟛ LEFT AND RIGHT TACK
# ⟜ LEFT MULTIMAP
# ⟝ LONG RIGHT TACK
# ⟞ LONG LEFT TACK
# ⟟ UP TACK WITH CIRCLE ABOVE
# ⟠ LOZENGE DIVIDED BY HORIZONTAL RULE
# ⟡ WHITE CONCAVE-SIDED DIAMOND
# ⟢ WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
# ⟣ WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
# ⟤ WHITE SQUARE WITH LEFTWARDS TICK
# ⟥ WHITE SQUARE WITH RIGHTWARDS TICK
# ⟰ UPWARDS QUADRUPLE ARROW
# ⟱ DOWNWARDS QUADRUPLE ARROW
# ⟲ ANTICLOCKWISE GAPPED CIRCLE ARROW
# ⟳ CLOCKWISE GAPPED CIRCLE ARROW
# ⟴ RIGHT ARROW WITH CIRCLED PLUS
# ⟵ LONG LEFTWARDS ARROW
# ⟶ LONG RIGHTWARDS ARROW
# ⟷ LONG LEFT RIGHT ARROW
# ⟸ LONG LEFTWARDS DOUBLE ARROW
# ⟹ LONG RIGHTWARDS DOUBLE ARROW
# ⟺ LONG LEFT RIGHT DOUBLE ARROW
# ⟻ LONG LEFTWARDS ARROW FROM BAR
# ⟼ LONG RIGHTWARDS ARROW FROM BAR
# ⟽ LONG LEFTWARDS DOUBLE ARROW FROM BAR
# ⟾ LONG RIGHTWARDS DOUBLE ARROW FROM BAR
# ⟿ LONG RIGHTWARDS SQUIGGLE ARROW
# ⤀ RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
# ⤁ RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
# ⤂ LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
# ⤃ RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
# ⤄ LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
# ⤅ RIGHTWARDS TWO-HEADED ARROW FROM BAR
# ⤆ LEFTWARDS DOUBLE ARROW FROM BAR
# ⤇ RIGHTWARDS DOUBLE ARROW FROM BAR
# ⤈ DOWNWARDS ARROW WITH HORIZONTAL STROKE
# ⤉ UPWARDS ARROW WITH HORIZONTAL STROKE
# ⤊ UPWARDS TRIPLE ARROW
# ⤋ DOWNWARDS TRIPLE ARROW
# ⤌ LEFTWARDS DOUBLE DASH ARROW
# ⤍ RIGHTWARDS DOUBLE DASH ARROW
# ⤎ LEFTWARDS TRIPLE DASH ARROW
# ⤏ RIGHTWARDS TRIPLE DASH ARROW
# ⤐ RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
# ⤑ RIGHTWARDS ARROW WITH DOTTED STEM
# ⤒ UPWARDS ARROW TO BAR
# ⤓ DOWNWARDS ARROW TO BAR
# ⤔ RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
# ⤕ RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
# ⤖ RIGHTWARDS TWO-HEADED ARROW WITH TAIL
# ⤗ RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
# ⤘ RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
# ⤙ LEFTWARDS ARROW-TAIL
# ⤚ RIGHTWARDS ARROW-TAIL
# ⤛ LEFTWARDS DOUBLE ARROW-TAIL
# ⤜ RIGHTWARDS DOUBLE ARROW-TAIL
# ⤝ LEFTWARDS ARROW TO BLACK DIAMOND
# ⤞ RIGHTWARDS ARROW TO BLACK DIAMOND
# ⤟ LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
# ⤠ RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
# ⤡ NORTH WEST AND SOUTH EAST ARROW
# ⤢ NORTH EAST AND SOUTH WEST ARROW
# ⤣ NORTH WEST ARROW WITH HOOK
# ⤤ NORTH EAST ARROW WITH HOOK
# ⤥ SOUTH EAST ARROW WITH HOOK
# ⤦ SOUTH WEST ARROW WITH HOOK
# ⤧ NORTH WEST ARROW AND NORTH EAST ARROW
# ⤨ NORTH EAST ARROW AND SOUTH EAST ARROW
# ⤩ SOUTH EAST ARROW AND SOUTH WEST ARROW
# ⤪ SOUTH WEST ARROW AND NORTH WEST ARROW
# ⤫ RISING DIAGONAL CROSSING FALLING DIAGONAL
# ⤬ FALLING DIAGONAL CROSSING RISING DIAGONAL
# ⤭ SOUTH EAST ARROW CROSSING NORTH EAST ARROW
# ⤮ NORTH EAST ARROW CROSSING SOUTH EAST ARROW
# ⤯ FALLING DIAGONAL CROSSING NORTH EAST ARROW
# ⤰ RISING DIAGONAL CROSSING SOUTH EAST ARROW
# ⤱ NORTH EAST ARROW CROSSING NORTH WEST ARROW
# ⤲ NORTH WEST ARROW CROSSING NORTH EAST ARROW
# ⤳ WAVE ARROW POINTING DIRECTLY RIGHT
# ⤴ ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
# ⤵ ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
# ⤶ ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
# ⤷ ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
# ⤸ RIGHT-SIDE ARC CLOCKWISE ARROW
# ⤹ LEFT-SIDE ARC ANTICLOCKWISE ARROW
# ⤺ TOP ARC ANTICLOCKWISE ARROW
# ⤻ BOTTOM ARC ANTICLOCKWISE ARROW
# ⤼ TOP ARC CLOCKWISE ARROW WITH MINUS
# ⤽ TOP ARC ANTICLOCKWISE ARROW WITH PLUS
# ⤾ LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW
# ⤿ LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW
# ⥀ ANTICLOCKWISE CLOSED CIRCLE ARROW
# ⥁ CLOCKWISE CLOSED CIRCLE ARROW
# ⥂ RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
# ⥃ LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW
# ⥄ SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
# ⥅ RIGHTWARDS ARROW WITH PLUS BELOW
# ⥆ LEFTWARDS ARROW WITH PLUS BELOW
# ⥇ RIGHTWARDS ARROW THROUGH X
# ⥈ LEFT RIGHT ARROW THROUGH SMALL CIRCLE
# ⥉ UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
# ⥊ LEFT BARB UP RIGHT BARB DOWN HARPOON
# ⥋ LEFT BARB DOWN RIGHT BARB UP HARPOON
# ⥌ UP BARB RIGHT DOWN BARB LEFT HARPOON
# ⥍ UP BARB LEFT DOWN BARB RIGHT HARPOON
# ⥎ LEFT BARB UP RIGHT BARB UP HARPOON
# ⥏ UP BARB RIGHT DOWN BARB RIGHT HARPOON
# ⥐ LEFT BARB DOWN RIGHT BARB DOWN HARPOON
# ⥑ UP BARB LEFT DOWN BARB LEFT HARPOON
# ⥒ LEFTWARDS HARPOON WITH BARB UP TO BAR
# ⥓ RIGHTWARDS HARPOON WITH BARB UP TO BAR
# ⥔ UPWARDS HARPOON WITH BARB RIGHT TO BAR
# ⥕ DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
# ⥖ LEFTWARDS HARPOON WITH BARB DOWN TO BAR
# ⥗ RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
# ⥘ UPWARDS HARPOON WITH BARB LEFT TO BAR
# ⥙ DOWNWARDS HARPOON WITH BARB LEFT TO BAR
# ⥚ LEFTWARDS HARPOON WITH BARB UP FROM BAR
# ⥛ RIGHTWARDS HARPOON WITH BARB UP FROM BAR
# ⥜ UPWARDS HARPOON WITH BARB RIGHT FROM BAR
# ⥝ DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
# ⥞ LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
# ⥟ RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
# ⥠ UPWARDS HARPOON WITH BARB LEFT FROM BAR
# ⥡ DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
# ⥢ LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
# ⥣ UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
# ⥤ RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
# ⥥ DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
# ⥦ LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
# ⥧ LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
# ⥨ RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
# ⥩ RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
# ⥪ LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
# ⥫ LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
# ⥬ RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
# ⥭ RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
# ⥮ UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
# ⥯ DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
# ⥰ RIGHT DOUBLE ARROW WITH ROUNDED HEAD
# ⥱ EQUALS SIGN ABOVE RIGHTWARDS ARROW
# ⥲ TILDE OPERATOR ABOVE RIGHTWARDS ARROW
# ⥳ LEFTWARDS ARROW ABOVE TILDE OPERATOR
# ⥴ RIGHTWARDS ARROW ABOVE TILDE OPERATOR
# ⥵ RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
# ⥶ LESS-THAN ABOVE LEFTWARDS ARROW
# ⥷ LEFTWARDS ARROW THROUGH LESS-THAN
# ⥸ GREATER-THAN ABOVE RIGHTWARDS ARROW
# ⥹ SUBSET ABOVE RIGHTWARDS ARROW
# ⥺ LEFTWARDS ARROW THROUGH SUBSET
# ⥻ SUPERSET ABOVE LEFTWARDS ARROW
# ⥼ LEFT FISH TAIL
# ⥽ RIGHT FISH TAIL
# ⥾ UP FISH TAIL
# ⥿ DOWN FISH TAIL
# ⦀ TRIPLE VERTICAL BAR DELIMITER
# ⦁ Z NOTATION SPOT
# ⦂ Z NOTATION TYPE COLON
# ⦙ DOTTED FENCE
# ⦚ VERTICAL ZIGZAG LINE
# ⦛ MEASURED ANGLE OPENING LEFT
# ⦜ RIGHT ANGLE VARIANT WITH SQUARE
# ⦝ MEASURED RIGHT ANGLE WITH DOT
# ⦞ ANGLE WITH S INSIDE
# ⦟ ACUTE ANGLE
# ⦠ SPHERICAL ANGLE OPENING LEFT
# ⦡ SPHERICAL ANGLE OPENING UP
# ⦢ TURNED ANGLE
# ⦣ REVERSED ANGLE
# ⦤ ANGLE WITH UNDERBAR
# ⦥ REVERSED ANGLE WITH UNDERBAR
# ⦦ OBLIQUE ANGLE OPENING UP
# ⦧ OBLIQUE ANGLE OPENING DOWN
# ⦨ MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
# ⦩ MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
# ⦪ MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
# ⦫ MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
# ⦬ MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
# ⦭ MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
# ⦮ MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
# ⦯ MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
# ⦰ REVERSED EMPTY SET
# ⦱ EMPTY SET WITH OVERBAR
# ⦲ EMPTY SET WITH SMALL CIRCLE ABOVE
# ⦳ EMPTY SET WITH RIGHT ARROW ABOVE
# ⦴ EMPTY SET WITH LEFT ARROW ABOVE
# ⦵ CIRCLE WITH HORIZONTAL BAR
# ⦶ CIRCLED VERTICAL BAR
# ⦷ CIRCLED PARALLEL
# ⦸ CIRCLED REVERSE SOLIDUS
# ⦹ CIRCLED PERPENDICULAR
# ⦺ CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR
# ⦻ CIRCLE WITH SUPERIMPOSED X
# ⦼ CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
# ⦽ UP ARROW THROUGH CIRCLE
# ⦾ CIRCLED WHITE BULLET
# ⦿ CIRCLED BULLET
# ⧀ CIRCLED LESS-THAN
# ⧁ CIRCLED GREATER-THAN
# ⧂ CIRCLE WITH SMALL CIRCLE TO THE RIGHT
# ⧃ CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
# ⧄ SQUARED RISING DIAGONAL SLASH
# ⧅ SQUARED FALLING DIAGONAL SLASH
# ⧆ SQUARED ASTERISK
# ⧇ SQUARED SMALL CIRCLE
# ⧈ SQUARED SQUARE
# ⧉ TWO JOINED SQUARES
# ⧊ TRIANGLE WITH DOT ABOVE
# ⧋ TRIANGLE WITH UNDERBAR
# ⧌ S IN TRIANGLE
# ⧍ TRIANGLE WITH SERIFS AT BOTTOM
# ⧎ RIGHT TRIANGLE ABOVE LEFT TRIANGLE
# ⧏ LEFT TRIANGLE BESIDE VERTICAL BAR
# ⧐ VERTICAL BAR BESIDE RIGHT TRIANGLE
# ⧑ BOWTIE WITH LEFT HALF BLACK
# ⧒ BOWTIE WITH RIGHT HALF BLACK
# ⧓ BLACK BOWTIE
# ⧔ TIMES WITH LEFT HALF BLACK
# ⧕ TIMES WITH RIGHT HALF BLACK
# ⧖ WHITE HOURGLASS
# ⧗ BLACK HOURGLASS
# ⧜ INCOMPLETE INFINITY
# ⧝ TIE OVER INFINITY
# ⧞ INFINITY NEGATED WITH VERTICAL BAR
# ⧟ DOUBLE-ENDED MULTIMAP
# ⧠ SQUARE WITH CONTOURED OUTLINE
# ⧡ INCREASES AS
# ⧢ SHUFFLE PRODUCT
# ⧣ EQUALS SIGN AND SLANTED PARALLEL
# ⧤ EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
# ⧥ IDENTICAL TO AND SLANTED PARALLEL
# ⧦ GLEICH STARK
# ⧧ THERMODYNAMIC
# ⧨ DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
# ⧩ DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
# ⧪ BLACK DIAMOND WITH DOWN ARROW
# ⧫ BLACK LOZENGE
# ⧬ WHITE CIRCLE WITH DOWN ARROW
# ⧭ BLACK CIRCLE WITH DOWN ARROW
# ⧮ ERROR-BARRED WHITE SQUARE
# ⧯ ERROR-BARRED BLACK SQUARE
# ⧰ ERROR-BARRED WHITE DIAMOND
# ⧱ ERROR-BARRED BLACK DIAMOND
# ⧲ ERROR-BARRED WHITE CIRCLE
# ⧳ ERROR-BARRED BLACK CIRCLE
# ⧴ RULE-DELAYED
# ⧵ REVERSE SOLIDUS OPERATOR
# ⧶ SOLIDUS WITH OVERBAR
# ⧷ REVERSE SOLIDUS WITH HORIZONTAL STROKE
# ⧸ BIG SOLIDUS
# ⧹ BIG REVERSE SOLIDUS
# ⧺ DOUBLE PLUS
# ⧻ TRIPLE PLUS
# ⧾ TINY
# ⧿ MINY
# ⨀ N-ARY CIRCLED DOT OPERATOR
# ⨁ N-ARY CIRCLED PLUS OPERATOR
# ⨂ N-ARY CIRCLED TIMES OPERATOR
# ⨃ N-ARY UNION OPERATOR WITH DOT
# ⨄ N-ARY UNION OPERATOR WITH PLUS
# ⨅ N-ARY SQUARE INTERSECTION OPERATOR
# ⨆ N-ARY SQUARE UNION OPERATOR
# ⨇ TWO LOGICAL AND OPERATOR
# ⨈ TWO LOGICAL OR OPERATOR
# ⨉ N-ARY TIMES OPERATOR
# ⨊ MODULO TWO SUM
# ⨋ SUMMATION WITH INTEGRAL
# ⨌ QUADRUPLE INTEGRAL OPERATOR
# ⨍ FINITE PART INTEGRAL
# ⨎ INTEGRAL WITH DOUBLE STROKE
# ⨏ INTEGRAL AVERAGE WITH SLASH
# ⨐ CIRCULATION FUNCTION
# ⨑ ANTICLOCKWISE INTEGRATION
# ⨒ LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
# ⨓ LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
# ⨔ LINE INTEGRATION NOT INCLUDING THE POLE
# ⨕ INTEGRAL AROUND A POINT OPERATOR
# ⨖ QUATERNION INTEGRAL OPERATOR
# ⨗ INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
# ⨘ INTEGRAL WITH TIMES SIGN
# ⨙ INTEGRAL WITH INTERSECTION
# ⨚ INTEGRAL WITH UNION
# ⨛ INTEGRAL WITH OVERBAR
# ⨜ INTEGRAL WITH UNDERBAR
# ⨝ JOIN
# ⨞ LARGE LEFT TRIANGLE OPERATOR
# ⨟ Z NOTATION SCHEMA COMPOSITION
# ⨠ Z NOTATION SCHEMA PIPING
# ⨡ Z NOTATION SCHEMA PROJECTION
# ⨢ PLUS SIGN WITH SMALL CIRCLE ABOVE
# ⨣ PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
# ⨤ PLUS SIGN WITH TILDE ABOVE
# ⨥ PLUS SIGN WITH DOT BELOW
# ⨦ PLUS SIGN WITH TILDE BELOW
# ⨧ PLUS SIGN WITH SUBSCRIPT TWO
# ⨨ PLUS SIGN WITH BLACK TRIANGLE
# ⨩ MINUS SIGN WITH COMMA ABOVE
# ⨪ MINUS SIGN WITH DOT BELOW
# ⨫ MINUS SIGN WITH FALLING DOTS
# ⨬ MINUS SIGN WITH RISING DOTS
# ⨭ PLUS SIGN IN LEFT HALF CIRCLE
# ⨮ PLUS SIGN IN RIGHT HALF CIRCLE
# ⨯ VECTOR OR CROSS PRODUCT
# ⨰ MULTIPLICATION SIGN WITH DOT ABOVE
# ⨱ MULTIPLICATION SIGN WITH UNDERBAR
# ⨲ SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
# ⨳ SMASH PRODUCT
# ⨴ MULTIPLICATION SIGN IN LEFT HALF CIRCLE
# ⨵ MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
# ⨶ CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
# ⨷ MULTIPLICATION SIGN IN DOUBLE CIRCLE
# ⨸ CIRCLED DIVISION SIGN
# ⨹ PLUS SIGN IN TRIANGLE
# ⨺ MINUS SIGN IN TRIANGLE
# ⨻ MULTIPLICATION SIGN IN TRIANGLE
# ⨼ INTERIOR PRODUCT
# ⨽ RIGHTHAND INTERIOR PRODUCT
# ⨾ Z NOTATION RELATIONAL COMPOSITION
# ⨿ AMALGAMATION OR COPRODUCT
# ⩀ INTERSECTION WITH DOT
# ⩁ UNION WITH MINUS SIGN
# ⩂ UNION WITH OVERBAR
# ⩃ INTERSECTION WITH OVERBAR
# ⩄ INTERSECTION WITH LOGICAL AND
# ⩅ UNION WITH LOGICAL OR
# ⩆ UNION ABOVE INTERSECTION
# ⩇ INTERSECTION ABOVE UNION
# ⩈ UNION ABOVE BAR ABOVE INTERSECTION
# ⩉ INTERSECTION ABOVE BAR ABOVE UNION
# ⩊ UNION BESIDE AND JOINED WITH UNION
# ⩋ INTERSECTION BESIDE AND JOINED WITH INTERSECTION
# ⩌ CLOSED UNION WITH SERIFS
# ⩍ CLOSED INTERSECTION WITH SERIFS
# ⩎ DOUBLE SQUARE INTERSECTION
# ⩏ DOUBLE SQUARE UNION
# ⩐ CLOSED UNION WITH SERIFS AND SMASH PRODUCT
# ⩑ LOGICAL AND WITH DOT ABOVE
# ⩒ LOGICAL OR WITH DOT ABOVE
# ⩓ DOUBLE LOGICAL AND
# ⩔ DOUBLE LOGICAL OR
# ⩕ TWO INTERSECTING LOGICAL AND
# ⩖ TWO INTERSECTING LOGICAL OR
# ⩗ SLOPING LARGE OR
# ⩘ SLOPING LARGE AND
# ⩙ LOGICAL OR OVERLAPPING LOGICAL AND
# ⩚ LOGICAL AND WITH MIDDLE STEM
# ⩛ LOGICAL OR WITH MIDDLE STEM
# ⩜ LOGICAL AND WITH HORIZONTAL DASH
# ⩝ LOGICAL OR WITH HORIZONTAL DASH
# ⩞ LOGICAL AND WITH DOUBLE OVERBAR
# ⩟ LOGICAL AND WITH UNDERBAR
# ⩠ LOGICAL AND WITH DOUBLE UNDERBAR
# ⩡ SMALL VEE WITH UNDERBAR
# ⩢ LOGICAL OR WITH DOUBLE OVERBAR
# ⩣ LOGICAL OR WITH DOUBLE UNDERBAR
# ⩤ Z NOTATION DOMAIN ANTIRESTRICTION
# ⩥ Z NOTATION RANGE ANTIRESTRICTION
# ⩦ EQUALS SIGN WITH DOT BELOW
# ⩧ IDENTICAL WITH DOT ABOVE
# ⩨ TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE
# ⩩ TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE
# ⩪ TILDE OPERATOR WITH DOT ABOVE
# ⩫ TILDE OPERATOR WITH RISING DOTS
# ⩬ SIMILAR MINUS SIMILAR
# ⩭ CONGRUENT WITH DOT ABOVE
# ⩮ EQUALS WITH ASTERISK
# ⩯ ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
# ⩰ APPROXIMATELY EQUAL OR EQUAL TO
# ⩱ EQUALS SIGN ABOVE PLUS SIGN
# ⩲ PLUS SIGN ABOVE EQUALS SIGN
# ⩳ EQUALS SIGN ABOVE TILDE OPERATOR
# ⩴ DOUBLE COLON EQUAL
# ⩵ TWO CONSECUTIVE EQUALS SIGNS
# ⩶ THREE CONSECUTIVE EQUALS SIGNS
# ⩷ EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
# ⩸ EQUIVALENT WITH FOUR DOTS ABOVE
# ⩹ LESS-THAN WITH CIRCLE INSIDE
# ⩺ GREATER-THAN WITH CIRCLE INSIDE
# ⩻ LESS-THAN WITH QUESTION MARK ABOVE
# ⩼ GREATER-THAN WITH QUESTION MARK ABOVE
# ⩽ LESS-THAN OR SLANTED EQUAL TO
# ⩾ GREATER-THAN OR SLANTED EQUAL TO
# ⩿ LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
# ⪀ GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
# ⪁ LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
# ⪂ GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
# ⪃ LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
# ⪄ GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
# ⪅ LESS-THAN OR APPROXIMATE
# ⪆ GREATER-THAN OR APPROXIMATE
# ⪇ LESS-THAN AND SINGLE-LINE NOT EQUAL TO
# ⪈ GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
# ⪉ LESS-THAN AND NOT APPROXIMATE
# ⪊ GREATER-THAN AND NOT APPROXIMATE
# ⪋ LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
# ⪌ GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
# ⪍ LESS-THAN ABOVE SIMILAR OR EQUAL
# ⪎ GREATER-THAN ABOVE SIMILAR OR EQUAL
# ⪏ LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
# ⪐ GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
# ⪑ LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
# ⪒ GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
# ⪓ LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
# ⪔ GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
# ⪕ SLANTED EQUAL TO OR LESS-THAN
# ⪖ SLANTED EQUAL TO OR GREATER-THAN
# ⪗ SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
# ⪘ SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
# ⪙ DOUBLE-LINE EQUAL TO OR LESS-THAN
# ⪚ DOUBLE-LINE EQUAL TO OR GREATER-THAN
# ⪛ DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
# ⪜ DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
# ⪝ SIMILAR OR LESS-THAN
# ⪞ SIMILAR OR GREATER-THAN
# ⪟ SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
# ⪠ SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
# ⪡ DOUBLE NESTED LESS-THAN
# ⪢ DOUBLE NESTED GREATER-THAN
# ⪣ DOUBLE NESTED LESS-THAN WITH UNDERBAR
# ⪤ GREATER-THAN OVERLAPPING LESS-THAN
# ⪥ GREATER-THAN BESIDE LESS-THAN
# ⪦ LESS-THAN CLOSED BY CURVE
# ⪧ GREATER-THAN CLOSED BY CURVE
# ⪨ LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
# ⪩ GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
# ⪪ SMALLER THAN
# ⪫ LARGER THAN
# ⪬ SMALLER THAN OR EQUAL TO
# ⪭ LARGER THAN OR EQUAL TO
# ⪮ EQUALS SIGN WITH BUMPY ABOVE
# ⪯ PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
# ⪰ SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
# ⪱ PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
# ⪲ SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
# ⪳ PRECEDES ABOVE EQUALS SIGN
# ⪴ SUCCEEDS ABOVE EQUALS SIGN
# ⪵ PRECEDES ABOVE NOT EQUAL TO
# ⪶ SUCCEEDS ABOVE NOT EQUAL TO
# ⪷ PRECEDES ABOVE ALMOST EQUAL TO
# ⪸ SUCCEEDS ABOVE ALMOST EQUAL TO
# ⪹ PRECEDES ABOVE NOT ALMOST EQUAL TO
# ⪺ SUCCEEDS ABOVE NOT ALMOST EQUAL TO
# ⪻ DOUBLE PRECEDES
# ⪼ DOUBLE SUCCEEDS
# ⪽ SUBSET WITH DOT
# ⪾ SUPERSET WITH DOT
# ⪿ SUBSET WITH PLUS SIGN BELOW
# ⫀ SUPERSET WITH PLUS SIGN BELOW
# ⫁ SUBSET WITH MULTIPLICATION SIGN BELOW
# ⫂ SUPERSET WITH MULTIPLICATION SIGN BELOW
# ⫃ SUBSET OF OR EQUAL TO WITH DOT ABOVE
# ⫄ SUPERSET OF OR EQUAL TO WITH DOT ABOVE
# ⫅ SUBSET OF ABOVE EQUALS SIGN
# ⫆ SUPERSET OF ABOVE EQUALS SIGN
# ⫇ SUBSET OF ABOVE TILDE OPERATOR
# ⫈ SUPERSET OF ABOVE TILDE OPERATOR
# ⫉ SUBSET OF ABOVE ALMOST EQUAL TO
# ⫊ SUPERSET OF ABOVE ALMOST EQUAL TO
# ⫋ SUBSET OF ABOVE NOT EQUAL TO
# ⫌ SUPERSET OF ABOVE NOT EQUAL TO
# ⫍ SQUARE LEFT OPEN BOX OPERATOR
# ⫎ SQUARE RIGHT OPEN BOX OPERATOR
# ⫏ CLOSED SUBSET
# ⫐ CLOSED SUPERSET
# ⫑ CLOSED SUBSET OR EQUAL TO
# ⫒ CLOSED SUPERSET OR EQUAL TO
# ⫓ SUBSET ABOVE SUPERSET
# ⫔ SUPERSET ABOVE SUBSET
# ⫕ SUBSET ABOVE SUBSET
# ⫖ SUPERSET ABOVE SUPERSET
# ⫗ SUPERSET BESIDE SUBSET
# ⫘ SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
# ⫙ ELEMENT OF OPENING DOWNWARDS
# ⫚ PITCHFORK WITH TEE TOP
# ⫛ TRANSVERSAL INTERSECTION
# ⫝̸ NONFORKING
# ⫝ NONFORKING
# ⫞ SHORT LEFT TACK
# ⫟ SHORT DOWN TACK
# ⫠ SHORT UP TACK
# ⫡ PERPENDICULAR WITH S
# ⫢ VERTICAL BAR TRIPLE RIGHT TURNSTILE
# ⫣ DOUBLE VERTICAL BAR LEFT TURNSTILE
# ⫤ VERTICAL BAR DOUBLE LEFT TURNSTILE
# ⫥ DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
# ⫦ LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
# ⫧ SHORT DOWN TACK WITH OVERBAR
# ⫨ SHORT UP TACK WITH UNDERBAR
# ⫩ SHORT UP TACK ABOVE SHORT DOWN TACK
# ⫪ DOUBLE DOWN TACK
# ⫫ DOUBLE UP TACK
# ⫬ DOUBLE STROKE NOT SIGN
# ⫭ REVERSED DOUBLE STROKE NOT SIGN
# ⫮ DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
# ⫯ VERTICAL LINE WITH CIRCLE ABOVE
# ⫰ VERTICAL LINE WITH CIRCLE BELOW
# ⫱ DOWN TACK WITH CIRCLE BELOW
# ⫲ PARALLEL WITH HORIZONTAL STROKE
# ⫳ PARALLEL WITH TILDE OPERATOR
# ⫴ TRIPLE VERTICAL BAR BINARY RELATION
# ⫵ TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE
# ⫶ TRIPLE COLON OPERATOR
# ⫷ TRIPLE NESTED LESS-THAN
# ⫸ TRIPLE NESTED GREATER-THAN
# ⫹ DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
# ⫺ DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
# ⫻ TRIPLE SOLIDUS BINARY RELATION
# ⫼ LARGE TRIPLE VERTICAL BAR OPERATOR
# ⫽ DOUBLE SOLIDUS OPERATOR
# ⫾ WHITE VERTICAL BAR
# ⫿ N-ARY WHITE VERTICAL BAR
# ⬰ LEFT ARROW WITH SMALL CIRCLE
# ⬱ THREE LEFTWARDS ARROWS
# ⬲ LEFT ARROW WITH CIRCLED PLUS
# ⬳ LONG LEFTWARDS SQUIGGLE ARROW
# ⬴ LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
# ⬵ LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
# ⬶ LEFTWARDS TWO-HEADED ARROW FROM BAR
# ⬷ LEFTWARDS TWO-HEADED TRIPLE DASH ARROW
# ⬸ LEFTWARDS ARROW WITH DOTTED STEM
# ⬹ LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
# ⬺ LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
# ⬻ LEFTWARDS TWO-HEADED ARROW WITH TAIL
# ⬼ LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
# ⬽ LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
# ⬾ LEFTWARDS ARROW THROUGH X
# ⬿ WAVE ARROW POINTING DIRECTLY LEFT
# ⭀ EQUALS SIGN ABOVE LEFTWARDS ARROW
# ⭁ REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW
# ⭂ LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
# ⭃ RIGHTWARDS ARROW THROUGH GREATER-THAN
# ⭄ RIGHTWARDS ARROW THROUGH SUPERSET
# ⭇ REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW
# ⭈ RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
# ⭉ TILDE OPERATOR ABOVE LEFTWARDS ARROW
# ⭊ LEFTWARDS ARROW ABOVE ALMOST EQUAL TO
# ⭋ LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
# ⭌ RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
# ﬩ HEBREW LETTER ALTERNATIVE PLUS SIGN
# ﹢ SMALL PLUS SIGN
# ﹤ SMALL LESS-THAN SIGN
# ﹥ SMALL GREATER-THAN SIGN
# ﹦ SMALL EQUALS SIGN
# + FULLWIDTH PLUS SIGN
# < FULLWIDTH LESS-THAN SIGN
# = FULLWIDTH EQUALS SIGN
# > FULLWIDTH GREATER-THAN SIGN
# | FULLWIDTH VERTICAL LINE
# ~ FULLWIDTH TILDE
# ¬ FULLWIDTH NOT SIGN
# ← HALFWIDTH LEFTWARDS ARROW
# ↑ HALFWIDTH UPWARDS ARROW
# → HALFWIDTH RIGHTWARDS ARROW
# ↓ HALFWIDTH DOWNWARDS ARROW
#
import std.ascii;
import std.algorithm.iteration;
import std.array;
import std.bigint;
import std.conv;
import std.stdio;
import std.string;
T pop(T)(ref T[] arr) {
T last = arr[$ - 1];
arr.length--;
return last;
}
void push(T)(ref T[] arr, T el) {
arr ~= el;
}
enum TokenType {
number, command, whitespace, none
}
enum string[] tokenTypeStrings = [
"number", "command", "whitespace", "none"
];
string toString(TokenType type) {
return tokenTypeStrings[to!int(type)];
}
class Token {
string raw;
TokenType type;
size_t start;
this() {
this("", TokenType.none, 0);
}
this(string raw, TokenType type, size_t start) {
this.raw = raw;
this.type = type;
this.start = start;
}
override string toString() {
return format("Token(%s, %s, %s)", raw, type.toString(), start);
}
}
class Tokenizer {
protected size_t ptr = 0;
protected string code;
protected Token[] tokens = [];
this(string code) {
this.code = code;
}
char cur() {
return code[ptr];
}
void advance() {
advance(1);
}
void advance(int n) {
ptr += n;
}
static bool isMeta(char c) {
return false;
}
void readRun(ref string str, bool function(dchar) validate) {
while(validate(cur())) {
str ~= cur();
advance();
}
}
string readRun(bool function(dchar) validate) {
string res = "";
readRun(res, validate);
return res;
}
void step() {
Token next = new Token();
next.start = ptr;
if(isDigit(cur())) {
next.type = TokenType.number;
readRun(next.raw, &isDigit);
} else if(isWhite(cur())) {
next.type = TokenType.whitespace;
readRun(next.raw, &isWhite);
}
// else if(Tokenizer.isMeta(cur())) {
// }
else {
next.type = TokenType.command;
next.raw ~= cur();
advance();
}
tokens ~= next;
}
Token[] run() {
while(ptr < code.length) {
step();
}
return tokens;
}
}
Token[] tokenize(string str) {
Tokenizer inst = new Tokenizer(str);
return inst.run();
}
enum ElementType {
number, string, array
}
union ElementValue {
BigInt num;
string str;
Element[] arr;
}
class Element {
ElementValue value;
ElementType type;
void update(string str) {
type = ElementType.string;
value.str = str;
}
void update(BigInt num) {
type = ElementType.number;
value.num = num;
}
void update(Element[] arr) {
type = ElementType.array;
value.arr = arr;
}
this(T)(T el) {
update(el);
}
override string toString() {
switch(type) {
case ElementType.array:
return to!string(value.arr);
case ElementType.string:
return value.str;
case ElementType.number:
return to!string(value.num);
default:
assert(0);
}
}
}
alias voidTir = void function(Tir);
void function(Tir) binary(Element function(Element, Element) fn) {
return (Tir inst) => {
Element a, b;
b = inst.pop;
a = inst.pop;
Element res = fn(a, b);
if(res) {
inst.push(res);
}
else {
writeln("no case");
}
};
}
class Tir {
Element[] stack = [];
Token[] tokens;
size_t ip = 0;
voidTir[string] ops;
Element pop() {
if(stack.length) {
return stack.pop;
}
else {
return new Element(BigInt("0"));
}
}
void push(Element el) {
stack.push(el);
}
void push(T)(T el) {
stack.push(new Element(el));
}
this(string code) {
tokens = code.tokenize();
ops["+"] = binary((a, b) => {
if(a.type == ElementType.number && a.type == ElementType.number) {
return a.value.number + b.value.number;
}
return null;
});
}
void push(BigInt el) {
stack ~= new Element(el);
}
void advance() {
ip++;
}
void step() {
Token cur = tokens[ip];
switch(cur.type) {
case TokenType.number:
push(BigInt(cur.raw));
break;
// do nothing
case TokenType.whitespace:
break;
case TokenType.command:
auto fn = ops[cur.raw];
if(fn) {
fn.call(this);
}
break;
default:
assert(0);
}
advance();
}
void run() {
while(ip < tokens.length) {
step();
}
}
}
void main() {
auto inst = new Tir("32 4+");
inst.run();
writeln(inst.stack);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment