Unicode-symbols

From HaskellWiki
Revision as of 12:37, 23 March 2010 by Roelvandijk (talk | contribs) (More content (work in progress))
Jump to navigation Jump to search


Overview

An overview of the packages that provide Unicode symbols.

Naming: A package X-unicode-symbols defines new symbols for functions and operators from the package X.

All symbols are documented with their actual definition and information regarding their Unicode code point. They should be completely interchangeable with their definitions.

Alternatives for existing operators have the same fixity. New operators will have a suitable fixity defined.

UnicodeSyntax

GHC offers the UnicodeSyntax language extension. If you decide to use Unicode in your Haskell source then this extension can greatly improve how it looks.

Input methods

These symbols are all very nice but how do you type them?

TODO

base-unicode-symbols

Extra symbols for the base package.

API docs: http://hackage.haskell.org/package/base-unicode-symbols

darcs get http://code.haskell.org/~roelvandijk/code/base-unicode-symbols

====New symbol ideas==== (please add your own)

Original Symbol Code point Name
Control.Monad.>> U+226B MUCH GREATER-THAN

containers-unicode-symbols

Extra symbols for the containers package.

API docs: http://hackage.haskell.org/package/containers-unicode-symbols

darcs get http://code.haskell.org/~roelvandijk/code/containers-unicode-symbols

Fixities

What should the fixities for the following symbols be?

Symbol Code point Name
U+222A UNION
U+2229 INTERSECTION
U+2286 SUBSET OF OR EQUAL TO
U+2287 SUPERSET OF OR EQUAL TO
U+2288 NEITHER A SUBSET OF NOR EQUAL TO
U+2289 NEITHER A SUPERSET OF NOR EQUAL TO
U+2282 SUBSET OF
U+2283 SUPERSET OF
U+2284 NOT A SUBSET OF
U+2285 NOT A SUPERSET OF

Intuitively there is a correspondence with numerical operators. Compare the following operators:

+
>

Likewise you would like similar associativities and precedence levels:

 x + y + z < w == ((x + y) + z) < w
 x ∪ y ∪ w ⊂ z == ((x ∪ y) ∪ z) ⊂ w

====New symbol ideas==== (please add your own)