HOME

TheInfoList



OR:

A symbol in
computer programming Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing and building an executable computer program. Programming involves tasks such as anal ...
is a
primitive data type In computer science, primitive data types are a set of basic data types from which all other data types are constructed. Specifically it often refers to the limited set of data representations in use by a particular processor, which all compiled pr ...
whose instances have a unique human-readable form. Symbols can be used as identifiers. In some
programming languages A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
, they are called atoms. Uniqueness is enforced by holding them in a
symbol table In computer science, a symbol table is a data structure used by a language translator such as a compiler or interpreter, where each identifier (or symbols), constants, procedures and functions in a program's source code is associated with info ...
. The most common use of symbols by programmers is for performing language reflection (particularly for callbacks), and most common indirectly is their use to create object linkages. In the most trivial
implementation Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy. Industry-specific definitions Computer science In computer science, an implementation is a real ...
, they are essentially named
integer An integer is the number zero (), a positive natural number (, , , etc.) or a negative integer with a minus sign ( −1, −2, −3, etc.). The negative numbers are the additive inverses of the corresponding positive numbers. In the languag ...
s (e.g. the
enumerated type In computer programming, an enumerated type (also called enumeration, enum, or factor in the R programming language, and a categorical variable in statistics) is a data type consisting of a set of named values called ''elements'', ''members'', '' ...
in C).


Support

The following
programming language A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language. The description of a programming ...
s provide runtime support for symbols:


Julia

Symbols in In
Julia Julia is usually a feminine given name. It is a Latinate feminine form of the name Julio and Julius. (For further details on etymology, see the Wiktionary entry "Julius".) The given name ''Julia'' had been in use throughout Late Antiquity (e.g ...
, are interned strings used to represent identifiers in parsed julia code( ASTs) and as names or labels to identify entities (for example as keys in a dictionary).


Lisp

A symbol in Lisp is unique in a
namespace In computing, a namespace is a set of signs (''names'') that are used to identify and refer to objects of various kinds. A namespace ensures that all of a given set of objects have unique names so that they can be easily identified. Namespaces ...
(or ''package'' in Common Lisp). Symbols can be tested for equality with the function EQ. Lisp programs can generate new symbols at runtime. When Lisp reads data that contains textual represented symbols, existing symbols are referenced. If a symbol is unknown, the Lisp reader creates a new symbol. In Common Lisp symbols have the following attributes: a name, a value, a function, a list of properties and a package. In Common Lisp it is also possible that a symbol is not interned in a package. Such symbols can be printed, but when read back, a new symbol needs to be created. Since it is not *interned*, the original symbol can't be retrieved from a package. In Common Lisp symbols may use any characters, including whitespace, such as spaces and newlines. If a symbol contains a whitespace character it needs to be written as , this is a symbol, . Symbols can be used as identifiers for any kind of named programming constructs: variables, functions, macros, classes, types, goto tags and more. Symbols can be interned in a package. Keyword symbols are self-evaluating and interned in the package named KEYWORD.


Examples

The following is a simple external representation of a Common Lisp symbol: this-is-a-symbol Symbols can contain whitespace (and all other characters): , This is a symbol with whitespace, In Common Lisp symbols with a leading colon in their printed representations are keyword symbols. These are interned in the keyword package. :keyword-symbol A printed representation of a symbol may include a package name. Two colons are written between the name of the package and the name of the symbol. package-name::symbol-name Packages can export symbols. Then only one colon is written between the name of the package and the name of the symbol. package:exported-symbol Symbols, which are not interned in a package, can also be created and have a notation: #:uninterned-symbol


PostScript

In PostScript, references to ''name'' objects can be either ''literal'' or ''executable'', influencing the behaviour of the interpreter when encountering them. The cvx and cvl operators can be used to convert between the two forms. When names are constructed from strings by means of the cvn operator, the set of allowed characters is unrestricted.


Prolog

In
Prolog Prolog is a logic programming language associated with artificial intelligence and computational linguistics. Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is intended primarily ...
, symbols (or atoms) are the primary primitive data types, similar to numbers. The exact notation may differ in different Prolog's dialects. However, it is always quite simple (no quotations or special beginning characters are necessary). Contrary to other languages, it is possible to give symbols some ''meaning'' by creating some Prolog's facts and/or rules.


Examples

The following example demonstrates two facts (describing what ''father'' is) and one rule (describing the ''meaning'' of ''sibling''). These three sentences use symbols (father, zeus, hermes, perseus and sibling) and some abstract variables (X, Y and Z). The ''mother'' relationship has been omitted for clarity. father(zeus, hermes). father(zeus, perseus). sibling(X, Y) :- father(Z, X), father(Z, Y).


Ruby

In
Ruby A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called ...
, symbols can be created with a literal form, or by converting a string. They can be used as an identifier or an interned string. Two symbols with the same contents will always refer to the same object. It is considered a
best practice A best practice is a method or technique that has been generally accepted as superior to other known alternatives because it often produces results that are superior to those achieved by other means or because it has become a standard way of doing ...
to use symbols as keys to an
associative array In computer science, an associative array, map, symbol table, or dictionary is an abstract data type that stores a collection of (key, value) pairs, such that each possible key appears at most once in the collection. In mathematical terms an ...
in Ruby.


Examples

The following is a simple example of a symbol literal in Ruby: my_symbol = :a my_symbol = :"an identifier" Strings can be coerced into symbols, vice versa: irb(main):001:0> my_symbol = "Hello, world!".intern => :"Hello, world!" irb(main):002:0> my_symbol = "Hello, world!".to_sym => :"Hello, world!" irb(main):003:0> my_string = :hello.to_s => "hello" Symbols are objects of the Symbol class in Ruby: irb(main):004:0> my_symbol = :hello_world => :hello_world irb(main):005:0> my_symbol.length => 11 irb(main):006:0> my_symbol.class => Symbol Symbols are commonly used to dynamically send messages to (call methods on) objects: irb(main):007:0> "aoboc".split("o") => a", "b", "c"irb(main):008:0> "aoboc".send(:split, "o") # same result => a", "b", "c" Symbols as keys of an associative array: irb(main):009:0> my_hash = => {:a=>"apple", :b=>"banana"} irb(main):010:0> my_hash a => "apple" irb(main):011:0> my_hash b => "banana"


Smalltalk

In Smalltalk, symbols can be created with a literal form, or by converting a string. They can be used as an identifier or an interned string. Two symbols with the same contents will always refer to the same object.http://wiki.squeak.org/squeak/uploads/172/standard_v1_9-indexed.pdf ANSI Smalltalk standard. In most Smalltalk implementations, selectors (method names) are implemented as symbols.


Examples

The following is a simple example of a symbol literal in Smalltalk: my_symbol := #'an identifier' " Symbol literal " my_symbol := #a " Technically, this is a selector literal. In most implementations, " " selectors are symbols, so this is also a symbol literal " Strings can be coerced into symbols, vice versa: my_symbol := 'Hello, world!' asSymbol " => #'Hello, world!' " my_string := #hello: asString " => 'hello:' " Symbols conform to the symbol protocol, and their class is called Symbol in most implementations: my_symbol := #hello_world my_symbol class " => Symbol " Symbols are commonly used to dynamically send messages to (call methods on) objects: " same as 'foo' at: 2 " 'foo' perform: #at: with: 2 " => $o "


References

Articles with example Ruby code Programming constructs