Vertical bar


The vertical bar, , is a glyph with various uses in mathematics, computing, and typography. It has many names, often related to particular meanings: Sheffer stroke, verti-bar, vbar, stick, vertical line, vertical slash, bar, pike, or pipe, and several variants on these names. It is occasionally considered an allograph of broken bar.

Usage

Mathematics

The vertical bar is used as a mathematical symbol in numerous ways:
The double vertical bar,, is also employed in mathematics.
In LaTeX mathematical mode the ASCII vertical bar produces a vertical line, and \| creates a double vertical line. This has different spacing from \mid and \parallel, which are relational operators: a \mid b \parallel c is set as. See below about LaTeX in text mode.

Physics

The vertical bar is used in bra–ket notation in quantum physics. Examples:

Pipe

A pipe is an inter-process communication mechanism originating in Unix, which directs the output of one process to the input of another. In this way, a series of commands can be "piped" together, giving users the ability to quickly perform complex multi-stage processing from the command line or as part of a Unix shell script. In most Unix shells, this is represented by the vertical bar character. For example:
grep -i 'blair' filename.log | more
where the output from the grep process is piped to the more process.
The same "pipe" feature is also found in later versions of DOS and Microsoft Windows.
This usage has led to the character itself being called "pipe".

Disjunction

In many programming languages, the vertical bar is used to designate the logic operation or, either bitwise or or logical or.
Specifically, in C and other languages following C syntax conventions, such as C++, Perl, Java and C#, a | b denotes a bitwise or; whereas a double vertical bar a || b denotes a logical or. Since the character was originally not available in all code pages and keyboard layouts, ANSI C can transcribe it in form of the trigraph ??!, which, outside string literals, is equivalent to the | character.
In regular expression syntax, the vertical bar again indicates logical or. For example: the Unix command grep -E 'fu|bar' matches lines containing 'fu' or 'bar'.

Concatenation

The double vertical bar operator "||" denotes string concatenation in PL/I, standard ANSI SQL, and theoretical computer science.

Delimiter

Although not as common as commas or tabs, the vertical bar can be used as a delimiter in a flat file. Examples of a pipe-delimited standard data format are LEDES 1998B and HL7. It is frequently used because vertical bars are typically uncommon in the data itself.
Similarly, the vertical bar may see use as a delimiter for regular expression operations. This is useful when the regular expression contains instances of the more common forward slash delimiter; using a vertical bar eliminates the need to escape all instances of the forward slash. However, this makes the bar unusable as the regular expression "alternative" operator.

Backus–Naur form

In Backus–Naur form, an expression consists of sequences of symbols and/or sequences separated by '|', indicating a choice, the whole being a possible substitution for the symbol on the left.

Concurrency operator

In calculi of communicating processes, the vertical bar is used to indicate that processes execute in parallel.

APL

The pipe in APL is the modulo or residue function between two operands and the absolute value function next to one operand.

List comprehensions

The vertical bar is used for list comprehensions in some functional languages, e.g. Haskell and Erlang. Compare [|set-builder notation].

Text markup

The vertical bar is used as special character in lightweight markup languages, notably MediaWiki's Wikitext.
In LaTeX text mode, the vertical bar produces an em dash. The \textbar command can be used to produce a vertical bar.

Phonetics and orthography

In the Khoisan languages and the International Phonetic Alphabet, the vertical bar is used to write the dental click. A double vertical bar is used to write the alveolar lateral click. Since these are technically letters, they have their own Unicode code points in the Latin Extended-B range: U+01C0 for the single bar and U+01C1 for the double bar.
Some Northwest and Northeast Caucasian languages written in the Cyrillic script have a vertical bar called palochka, indicating the preceding consonant is an ejective.
Longer single and double vertical bars are used to mark prosodic boundaries in the IPA.

Literature

Punctuation

In medieval European manuscripts, a single vertical bar was a common variant of the virgula used as a period, scratch comma, and caesura mark.
In Sanskrit and other Indian languages, a single vertical mark, a danda, has a similar function as a period. Two bars || is the equivalent of a pilcrow in marking the end of a stanza, paragraph or section. The danda has its own Unicode code point, U+0964.

Poetry

A double vertical bar or is the standard caesura mark in English literary criticism and analysis. It marks the strong break or caesura common to many forms of poetry, particularly Old English verse.

Notation

In the Geneva Bible and early printings of the King James Version, a double vertical bar is used to mark margin notes that contain an alternative translation from the original text. These margin notes always begin with the conjunction "Or". In later printings of the King James Version, the double vertical bar is irregularly used to mark any comment in the margins.

Music scoring

In music, when writing chord sheets, single vertical bars associated with a colon represents the beginning and end of a section of music. Single bars can also represent the beginning and end of measures. A double vertical bar associated with a colon can represent the repeat of a given section.

Encoding

Solid vertical bar vs broken bar

Many early video terminals and dot-matrix printers rendered the vertical bar character as the allograph broken bar. This may have been to distinguish the character from the lower-case 'L' and the upper-case '' on these limited-resolution devices, and to make a vertical line of them look more like a horizontal line of dashes. It was also part of the ASCII standard.
The X3.2 subcommittee for Coded Character Sets and Data Format initial draft for a 7-bit character set published on June 8, 1961, introduced the vertical bar within a standard set for the very first time, intended to be used as the representation for the logical OR symbol. A subsequent draft on May 12, 1966, places the vertical bar in column 7 alongside regional entry codepoints, and formed the basis for the original draft proposal used by the International Standards Organisation. This draft received opposition from an IBM user group known as SHARE, with its chairman, H. W. Nelson, writing a letter to the American Standards Association titled "The Proposed revised American Standard Code for Information Interchange does NOT meet the needs of computer programmers!"; in this letter, he argues that no characters within the international subset designated at columns 2-5 of the character set would be able to adequately represent logical OR and logical NOT in languages such as IBM's PL/I universally on all platforms. As a compromise, a requirement was introduced where the exclamation mark and circumflex and would display as logical OR and logical NOT respectively in use cases such as programming, while outside of these use cases they would represent their original typographic symbols:
The original vertical bar encoded at 0x7C in the original May 12, 1966 draft was then broken as, so it could not be confused with the unbroken logical OR. In the 1967 revision of ASCII, along with the equivalent ISO 464 code published the same year, the code point was defined to be a broken vertical bar, and the exclamation mark character was allowed to be rendered as a solid vertical bar. However, the 1977 revision undid the changes made in the 1967 revision, enforcing that the circumflex could no longer be stylised as a logical NOT symbol, the exclamation mark likewise no longer allowing stylisation as a vertical bar, and defining the code point originally set to the broken bar as a solid vertical bar instead; the same changes were also reverted in ISO 646-1973 published four years prior.
Some variants of EBCDIC included both versions of the character as different code points. The broad implementation of the extended ASCII ISO/IEC 8859 series in the 1990s also made a distinction between the two forms. This was preserved in Unicode as a separate character at U+00A6 BROKEN BAR. Some fonts draw the characters the same. The broken bar does not appear to have any clearly identified uses distinct from those of the vertical bar. In non-computing use — for example in mathematics, physics and general typography — the broken bar is not an acceptable substitute for the vertical bar.
rendered in VGA, which displays the broken bar glyph for codepoint 7C, despite the 1977 revision to ASCII
Many keyboards with US or US-International layout display the broken bar on a keycap even though the solid vertical bar character is produced in modern operating systems. This includes many German QWERTZ keyboards. This is a legacy of keyboards manufactured during the 1980s and 1990s for IBM PC compatible computers featuring the broken bar, as such computers used IBM's 8-bit Code page 437 character set based on ASCII, which continued to display the glyph for the broken bar at codepoint 7C on displays from MDA to VGA despite the changes made to ASCII in 1977.
The broken bar character can be typed as or or on Windows and on Linux. It can be inserted into HTML as

Unicode code points

These glyphs are encoded in Unicode as follows: