Content deleted Content added
→Lisp: Change formatting to MediaWiki syntax |
Chemophilic (talk | contribs) Tags: Mobile edit Mobile web edit Advanced mobile edit |
||
(15 intermediate revisions by 11 users not shown) | |||
Line 1:
{{generalize|date=October 2023}}{{Short description|Datatype in programming}}
A '''symbol''' in [[computer programming]] is a [[Primitive data type|primitive]] [[data type]] whose [[Instance (computer science)|instances]] have a
In the most trivial [[implementation]], they are essentially named [[integer]]s;
==Support==
Line 13:
| [[ANSI]] [[Common Lisp]] || symbol, keyword || <code>symbol</code>, <code>:keyword</code>
|-
| [[Clojure]] || symbol,<ref>[http://clojure.org/data_structures#Data%20Structures-Symbols Symbols] on the page on Data Structures</ref> keyword<ref>[http://clojure.org/data_structures#Data%20Structures-Keywords Keywords] on the page on Data Structures</ref> || <code>
|-
| [[Dart (programming language)|Dart]] || Symbol<ref>{{cite web |title=A tour of the Dart language {{pipe}} Symbols |url=https://dart.dev/guides/language/language-tour#symbols |website=Dart programming language |access-date=17 January 2021}}</ref> || <code>#sym</code>
Line 25:
| [[Julia (programming language)|Julia]] || Symbol || <code>:sym</code>
|-
| [[K (programming language)|K]] || symbol || `sym
|-
| [[Objective-C]] || SEL || <code>@selector(sym)</code>
Line 33:
| [[PostScript]] || name || <code>/sym</code> or <code>sym</code>
|-
| [[
|-
| [[Ruby (programming language)|Ruby]] || Symbol || <code>:sym</code> or <code>:'sym'</code>
Line 39:
| [[Scala (programming language)|Scala]] || scala.Symbol || <code>'symbol</code>
|-
| [[Scheme (programming language)|Scheme]] || symbol || <code>
|-
| [[Smalltalk]] || Symbol || <code>#sym</code> or <code>#'sym'</code>
Line 49:
===Julia===
Symbols in
===Lisp===
A symbol in [[Lisp (programming language)|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.<ref>
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
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.<ref>
====Examples====
Line 95 ⟶ 96:
===Prolog===
In [[
Contrary to many other languages, it is possible to give symbols
====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
<syntaxhighlight lang="prolog">
father(zeus, hermes).
Line 110 ⟶ 111:
===Ruby===
In [[Ruby (programming language)|Ruby]], symbols can be created with a literal form, or by converting a string.<ref name=pickaxe />
They can be used as an identifier or an interned string.<ref name="rubysymbol">{{cite web |last=Kidd |first=Eric |date=20 January 2007 |title=13 Ways of Looking at a Ruby Symbol |url=http://www.randomhacks.net/articles/2007/01/20/13-ways-of-looking-at-a-ruby-symbol#9 |work=Random Hacks |access-date=10 July 2011}}</ref> Two symbols with the same contents will always refer to the same object.<ref>{{Cite web
It is considered a [[best practice]] to use symbols as keys to an [[associative array]] in Ruby.<ref name=rubysymbol /><ref name="wrongreason">{{cite web|title=Using Symbols for the Wrong Reason|url=http://microjet.ath.cx/WebWiki/2005.12.27_UsingSymbolsForTheWrongReason.html|work=Gnomic Notes}}</ref>
Line 128 ⟶ 129:
=> "hello"
</syntaxhighlight>
Symbols are objects of the <code>Symbol</code> class in Ruby:<ref name="rdocsymbol">{{cite web|title=Symbol|url=
<syntaxhighlight lang=irb>
irb(main):004:0> my_symbol = :hello_world
Line 155 ⟶ 156:
===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.<ref>http://wiki.squeak.org/squeak/uploads/172/standard_v1_9-indexed.pdf ANSI Smalltalk standard.</ref> In most Smalltalk implementations, selectors (method names) are implemented as symbols.
====Examples====
Line 182:
==References==
{{Reflist}}
[[Category:Articles with example Ruby code]]
|