Caret (computing)

From HandWiki
Short description: The character "^"
^
Spacing caret
In UnicodeU+005E ^ CIRCUMFLEX ACCENT (HTML ^)
Different from
Different fromU+2038 CARET
U+02C6 ˆ MODIFIER LETTER CIRCUMFLEX ACCENT
U+028C ʌ LATIN SMALL LETTER TURNED V
U+2227 LOGICAL AND
U+039B Λ GREEK CAPITAL LETTER LAMDA

In computing, the caret is the name used familiarly of the character ^, the 'freestanding' circumflex, provided on QWERTY keyboards using . This nomenclature arose from its visual similarity to the original proofreader's caret (). The symbol has a variety of uses in programming and mathematics.

History

The original meaning of the word caret is a proofreader's mark used to indicate where a punctuation mark, word, or phrase should be inserted into a document. This sense is preserved in caret navigation, where the word is used of a cursor (which indicates where text is being entered).

Caret compared to lower-case circumflex accent

The symbol was originally provided in typewriters and computer printers so that circumflex accents could be overprinted on letters (as in ô or ŵ). The original 1963 version of the ASCII standard used the code point 5Ehex for an up-arrow . However, the 1965 ECMA-6 standard replaced the up-arrow with circumflex ^ diacritic and in 1967, the second revision of ASCII followed suit.[1] Overprinting to add an accent mark was not always supported well by printers, and was almost never possible on video terminals. Instead precomposed characters (with the diacritic included) were eventually created to show the accented letters.[lower-alpha 1] The freestanding circumflex (which had become to be called a caret) quickly became reused for many other purposes, such as in computer languages and mathematical notation. As the mark did not need to fit above a letter anymore, it became larger in appearance such that it can no longer be used to overprint an accent.[2][lower-alpha 2]

In Unicode it is encoded as U+005E ^ CIRCUMFLEX ACCENT and in HTML may be inserted with &hat;. This caret is not to be confused with other chevron-shaped characters, such as the turned v or the logical AND, which may occasionally be called carets.[3][4]

Uses

Programming languages

The symbol ^ has many uses in programming languages, where it is typically called a caret. It can signify exponentiation, the bitwise XOR operator, string concatenation, and control characters in caret notation, among other uses. In regular expressions, the caret is used to match the beginning of a string or line; if it begins a character class, then the inverse of the class is to be matched.

ANSI C can transcribe the caret in the form of the trigraph ??', as the character was originally not available in all character sets and keyboards. C++ additionally supports tokens like xor (for ^) and xor_eq (for ^=) to avoid the character altogether. RFC 1345 recommends that the character be transcribed as digraph '> when required.[5]

Pascal uses the caret for declaring and dereferencing pointers. In Smalltalk, the caret is the method return statement. In C++/CLI, .NET reference types are accessed through a handle using the ClassName^ syntax. In Apple's C extensions for Mac OS X and iOS, carets are used to create blocks and to denote block types. Go uses it as a bitwise NOT operator.

Node.js uses the caret in package.json files to signify dependency resolution behavior being used for each particular dependency. In the case of Node.js, a caret allows any kind of update, unless it is seen as a "major" update as defined by semver.[6]

Surrogate symbol for superscript and exponentiation

In mathematics, the caret can signify exponentiation (3^5 for 35), where the usual superscript is not readily usable (as on some graphing calculators). It is also used to indicate a superscript in TeX typesetting. As Isaac Asimov described it in his 1974 "Skewered!" essay (on Skewes' number), "I make the exponent a figure of normal size and it is as though it is being held up by a lever, and its added weight when its size grows bends the lever down."[7] The use of the caret for exponentiation can be traced back to ALGOL 60,[citation needed] which expressed the exponentiation operator as an upward-pointing arrow, intended to evoke the superscript notation common in mathematics. The upward-pointing arrow is now used to signify hyperoperations in Knuth's up-arrow notation.

Escape character

Often seen as caret notation to show control characters, for instance ^A means the control character with value 1.

The command-line interpreter, cmd.exe, of Windows uses the caret to escape reserved characters (most other shells use the backslash). For instance to pass a less-than sign as an argument to a program you type ^<.

Upwards-pointing arrow

In internet forums, social networking sites such as Facebook, or in online chats, one or more carets may be used beneath the text of another post, representing an upwards-pointing arrow to that post.[8] In addition to the arrow usage, it can also mean that the user who posted the ^ agrees with the above post. Multiple caretss may indicate the comment is replying to or relating to the post above that correlates with the number of carets used, or to "underscore" the correct portion of the previous post, or may simply be used for emphasis.

A similar use has been adopted by programming language compilers such as Java compiler to point out where a compilation error has occurred.[citation needed] The compiler prints out the faulty line of code and uses a single caret on the next line, padded by spaces, to give a visual indication of the error location.

See also

  • Caret as used in proofreading and typography
  • Hat operator, a notation used in mathematics and statistics, is sometimes called a caret

Notes

  1. For instance in ISO Latin-1.
  2. Its actual shape, positioning and relative dimensions vary by font.

References