fbpx
Wikipedia

Symbol (programming)

A symbol in computer programming is a primitive data type whose instances have a human-readable form. Symbols can be used as identifiers. In some programming languages, they are called atoms.[1] Uniqueness is enforced by holding them in a symbol table. The most common use of symbols by programmers is to perform language reflection (particularly for callbacks), and the most common indirectly is their use to create object linkages.

In the most trivial implementation, they are essentially named integers; e.g., the enumerated type in C language.

Support edit

The following programming languages provide runtime support for symbols:

language type name(s) example literal(s)
ANSI Common Lisp symbol, keyword symbol, :keyword
Clojure symbol,[2] keyword[3] 'symbol, :keyword
Dart Symbol[4] #sym
Elixir atom, symbol :sym
Erlang atom sym or 'sym'
JavaScript (ES6 and later) Symbol Symbol("sym");
Julia Symbol :sym
K symbol `sym
Objective-C SEL @selector(sym)
PICAXE BASIC symbol symbol let name = variable
PostScript name /sym or sym
Prolog atom, symbol sym or 'sym'
Ruby Symbol :sym or :'sym'
Scala scala.Symbol 'symbol
Scheme symbol sym
Smalltalk Symbol #sym or #'sym'
SML/NJ Atom.atom
Wolfram Language Symbol Symbol["sym"] or sym

Julia edit

Symbols in Julia 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).[5]

Lisp edit

A symbol in Lisp is unique in a namespace (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.[6]

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 not 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.[7] Keyword symbols are self-evaluating,[8] and interned in the package named KEYWORD.

Examples edit

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 edit

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 edit

In Prolog, symbols (or atoms) are the main primitive data types, similar to numbers.[9] The exact notation may differ in different Prolog dialects. However, it is always quite simple (no quotations or special beginning characters are necessary).

Contrary to many other languages, it is possible to give symbols a meaning by creating some Prolog facts and/or rules.

Examples edit

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 is omitted for clarity.

father(zeus, hermes). father(zeus, perseus). sibling(X, Y) :- father(Z, X), father(Z, Y). 

Ruby edit

In Ruby, symbols can be created with a literal form, or by converting a string.[1] They can be used as an identifier or an interned string.[10] Two symbols with the same contents will always refer to the same object.[11] It is considered a best practice to use symbols as keys to an associative array in Ruby.[10][12]

Examples edit

The following is a simple example of a symbol literal in Ruby:[1]

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:[13]

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" } => {:a=>"apple", :b=>"banana"} irb(main):010:0> my_hash[:a]  => "apple" irb(main):011:0> my_hash[:b]  => "banana" 

Smalltalk edit

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.[14] In most Smalltalk implementations, selectors (method names) are implemented as symbols.

Examples edit

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 edit

  1. ^ a b c Thomas, Dave; Fowler, Chad; Hunt, Andy (2001). Programming Ruby the pragmatic programmers' guide; [includes Ruby 1.8] (2nd, 10 print. ed.). Raleigh, North Carolina: The Pragmatic Bookshelf. ISBN 978-0-9745140-5-5.
  2. ^ Symbols on the page on Data Structures
  3. ^ Keywords on the page on Data Structures
  4. ^ "A tour of the Dart language | Symbols". Dart programming language. Retrieved 17 January 2021.
  5. ^ "Julia Core.Symbol". Julia Documentation. Retrieved 31 May 2022.
  6. ^ "CLHS: System Class SYMBOL". www.lispworks.com.
  7. ^ "CLHS: System Class PACKAGE". www.lispworks.com.
  8. ^ Peter Norvig: Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp, Morgan Kaufmann, 1991, ISBN 1-55860-191-0, Web
  9. ^ Bratko, Ivan (2001). Prolog programming for artificial intelligence. Harlow, England; New York: Addison Wesley. ISBN 978-0-201-40375-6.
  10. ^ a b Kidd, Eric (20 January 2007). "13 Ways of Looking at a Ruby Symbol". Random Hacks. Retrieved 10 July 2011.
  11. ^ "Programming Ruby: The Pragmatic Programmer's Guide". ruby-doc.com.
  12. ^ "Using Symbols for the Wrong Reason". Gnomic Notes.
  13. ^ "Symbol". Ruby Documentation. Retrieved 10 July 2011.
  14. ^ http://wiki.squeak.org/squeak/uploads/172/standard_v1_9-indexed.pdf ANSI Smalltalk standard.

symbol, programming, this, article, focuses, only, specialized, aspect, subject, please, help, improve, this, article, adding, general, information, discuss, talk, page, october, 2023, symbol, computer, programming, primitive, data, type, whose, instances, hav. This article focuses only on one specialized aspect of the subject Please help improve this article by adding general information and discuss at the talk page October 2023 A symbol in computer programming is a primitive data type whose instances have a human readable form Symbols can be used as identifiers In some programming languages they are called atoms 1 Uniqueness is enforced by holding them in a symbol table The most common use of symbols by programmers is to perform language reflection particularly for callbacks and the most common indirectly is their use to create object linkages In the most trivial implementation they are essentially named integers e g the enumerated type in C language Contents 1 Support 1 1 Julia 1 2 Lisp 1 2 1 Examples 1 3 PostScript 1 4 Prolog 1 4 1 Examples 1 5 Ruby 1 5 1 Examples 1 6 Smalltalk 1 6 1 Examples 2 ReferencesSupport editThe following programming languages provide runtime support for symbols This is a dynamic list and may never be able to satisfy particular standards for completeness You can help by adding missing items with reliable sources language type name s example literal s ANSI Common Lisp symbol keyword symbol keywordClojure symbol 2 keyword 3 symbol keywordDart Symbol 4 symElixir atom symbol symErlang atom sym or sym JavaScript ES6 and later Symbol Symbol sym Julia Symbol symK symbol symObjective C SEL selector sym PICAXE BASIC symbol symbol let name variablePostScript name sym or symProlog atom symbol sym or sym Ruby Symbol sym or sym Scala scala Symbol symbolScheme symbol symSmalltalk Symbol sym or sym SML NJ Atom atomWolfram Language Symbol Symbol sym or symJulia edit Symbols in Julia 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 5 Lisp edit A symbol in Lisp is unique in a namespace 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 6 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 not 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 7 Keyword symbols are self evaluating 8 and interned in the package named KEYWORD Examples edit 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 edit 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 edit In Prolog symbols or atoms are the main primitive data types similar to numbers 9 The exact notation may differ in different Prolog dialects However it is always quite simple no quotations or special beginning characters are necessary Contrary to many other languages it is possible to give symbols a meaning by creating some Prolog facts and or rules Examples edit 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 is omitted for clarity father zeus hermes father zeus perseus sibling X Y father Z X father Z Y Ruby edit In Ruby symbols can be created with a literal form or by converting a string 1 They can be used as an identifier or an interned string 10 Two symbols with the same contents will always refer to the same object 11 It is considered a best practice to use symbols as keys to an associative array in Ruby 10 12 Examples edit The following is a simple example of a symbol literal in Ruby 1 my symbol a my symbol an identifier Strings can be coerced into symbols vice versa irb main 001 0 gt my symbol Hello world intern gt Hello world irb main 002 0 gt my symbol Hello world to sym gt Hello world irb main 003 0 gt my string hello to s gt hello Symbols are objects of the Symbol class in Ruby 13 irb main 004 0 gt my symbol hello world gt hello world irb main 005 0 gt my symbol length gt 11 irb main 006 0 gt my symbol class gt Symbol Symbols are commonly used to dynamically send messages to call methods on objects irb main 007 0 gt aoboc split o gt a b c irb main 008 0 gt aoboc send split o same result gt a b c Symbols as keys of an associative array irb main 009 0 gt my hash a apple b banana gt a gt apple b gt banana irb main 010 0 gt my hash a gt apple irb main 011 0 gt my hash b gt banana Smalltalk edit 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 14 In most Smalltalk implementations selectors method names are implemented as symbols Examples edit 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 gt Hello world my string hello asString gt hello Symbols conform to the symbol protocol and their class is called Symbol in most implementations my symbol hello world my symbol class gt Symbol Symbols are commonly used to dynamically send messages to call methods on objects same as foo at 2 foo perform at with 2 gt o References edit a b c Thomas Dave Fowler Chad Hunt Andy 2001 Programming Ruby the pragmatic programmers guide includes Ruby 1 8 2nd 10 print ed Raleigh North Carolina The Pragmatic Bookshelf ISBN 978 0 9745140 5 5 Symbols on the page on Data Structures Keywords on the page on Data Structures A tour of the Dart language Symbols Dart programming language Retrieved 17 January 2021 Julia Core Symbol Julia Documentation Retrieved 31 May 2022 CLHS System Class SYMBOL www lispworks com CLHS System Class PACKAGE www lispworks com Peter Norvig Paradigms of Artificial Intelligence Programming Case Studies in Common Lisp Morgan Kaufmann 1991 ISBN 1 55860 191 0 Web Bratko Ivan 2001 Prolog programming for artificial intelligence Harlow England New York Addison Wesley ISBN 978 0 201 40375 6 a b Kidd Eric 20 January 2007 13 Ways of Looking at a Ruby Symbol Random Hacks Retrieved 10 July 2011 Programming Ruby The Pragmatic Programmer s Guide ruby doc com Using Symbols for the Wrong Reason Gnomic Notes Symbol Ruby Documentation Retrieved 10 July 2011 http wiki squeak org squeak uploads 172 standard v1 9 indexed pdf ANSI Smalltalk standard Retrieved from https en wikipedia org w index php title Symbol programming amp oldid 1184143288, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.