Share to: share facebook share twitter share wa share telegram print page

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

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

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

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

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, 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

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

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

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

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

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

  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.

Read other articles:

فردا طاقم أرضي تبع لسلاح الجو الملكي يثبتون كمرة في طائرة طائرة الرَّكب الأرضي[1] أو الطاقم الأرضي في جميع أشكال الطيران هم الأفراد الذين يقومون بخدمة الطائرات أثناء وجودها على الأرض وهذا نقيض الطاقم الجوي الطائرة الذين يديرون الطائرة أثناء الطيران. يُستخدم مصطلح الطاق

Les municipalités de Serbie La Serbie, en incluant le Kosovo dont le statut est disputé, est divisée en 150 municipalités ou communes (en serbe cyrillique : општине ; en serbe latin : opštine) et 24 villes (градови et gradovi), qui constituent les unités fondamentales du gouvernement des collectivités territoriales[1]. Cinq de ces villes, sont elles-mêmes divisées en plusieurs municipalités urbaines (gradske opštine) : Belgrade, Novi Sad, Niš, Kraguj…

Croatian footballer and manager Krunoslav Jurčić Jurčić with Dinamo Zagreb in 2013Personal informationDate of birth (1969-11-26) 26 November 1969 (age 54)Place of birth Ljubuški, SR Bosnia and Herzegovina, YugoslaviaHeight 1.88 m (6 ft 2 in)Position(s) Defensive midfielderSenior career*Years Team Apps (Gls)1988–1991 Dinamo Zagreb 0 (0)1991–1993 Inker Zaprešić 39 (9)1993–1995 Istra 46 (14)1995–1996 Beveren 20 (0)1996–1999 Dinamo Zagreb 84 (17)1999–2001 Torin…

У Вікіпедії є статті про інших людей із прізвищем Суслов. Суслов Онисим Зіновійович ЗображенняНародився 1857Єлисаветград, Бобринецький повіт, Херсонська губернія, Російська імперіяПомер 2 грудня 1929(1929-12-02)Одеса, Українська СРР, СРСРГромадянство  Російська імперія УНР&…

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (يناير 2022) اضغط هنا للاطلاع على كيفية قراءة التصنيف البارياصورات القزمةالعصر: البرمي الأوسط-البرمي المتأخر, 260–252 م…

Daftar keuskupan di Skotlandia adalah sebuah daftar yang memuat dan menjabarkan pembagian terhadap wilayah administratif Gereja Katolik Roma yang dipimpin oleh seorang uskup ataupun ordinaris di Skotlandia. Konferensi para uskup Skotlandia bergabung bersama para uskup di Skotlandia dalam Konferensi Waligereja Skotlandia. Saat ini terdapat 12 buah keuskupan, di mana 2 merupakan keuskupan agung, 8 merupakan keuskupan sufragan, dan 1 merupakan ordinariat personal, serta 1 ordinariat militer. Daftar…

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (مارس 2016) نفط البصرة الاسم الكامل نادي نفط البصرة الرياضي اللقب فرسان الجنوب تأسس عام 1979 البلد العراق  الدوري الدور

Vol Eastern Air Lines 401 Le Lockheed L-1011 TriStar impliqué dans l'accident, ici en mars 1972. Caractéristiques de l'accident Date29 décembre 1972 TypeImpact sans perte de contrôle CausesErreur de pilotage SiteDans les Everglades, prés de l'aéroport international de Miami, en Floride Coordonnées 25° 51′ 53″ nord, 80° 35′ 43″ ouest Caractéristiques de l'appareil Type d'appareilLockheed L-1011 TriStar CompagnieEastern Air Lines No  d'identific…

Family of diesel and electric multiple units from Siemens Siemens DesiroDesiro train in Graz, AustriaManufacturerSiemens Mobility, Ural LocomotivesSpecificationsMaximum speedUnited Kingdom:180 km/h (112 mph)Majority:160 km/h (100 mph)Some in Russia:140 km/h (90 mph)Track gauge1,435 mm (4 ft 8+1⁄2 in) standard gauge The Siemens Desiro (/ˈdɛziroʊ/, /dɛˈziːroʊ/, German pronunciation: [ˈdɛziʁoː][1]) is a family of die…

Negara Lai萊?–567 SMStatusMonarkiIbu kotaNi (郳)Bahasa yang umum digunakanBahasa LaiPemerintahanMonarkiAdipati Lai • ?–567 SM Furou, Adipati Gong dari Lai Sejarah • Didirikan ?• Ditaklukan oleh Qi 567 SM Didahului oleh Digantikan oleh Dinasti Zhou Periode Negara Perang Dinasti Qin Qin (negara) Artikel ini memuat Teks Tionghoa. Tanpa bantuan render yang baik, anda mungkin akan melihat tanda tanya, kotak-kotak, atau simbol lainnya bukannya Karakter Tio…

1976–2005 conflict in northwest Sumatra, Indonesia For the conflict with the Dutch, see Aceh War. Insurgency in AcehPart of War on terror and Terrorism in IndonesiaFemale soldiers of the Free Aceh Movement with GAM commander Abdullah Syafei'i, 1999Date4 December 1976 – 15 August 2005(28 years, 8 months, 1 week and 4 days)LocationAceh, IndonesiaResult Indonesian tactical victory; Helsinki peaceful Memorandum of Understanding Special autonomy granted to Aceh Disarmament of …

  لمعانٍ أخرى، طالع جون فيلد (توضيح). جون فيلد (بالإنجليزية: John Field)‏    معلومات شخصية الميلاد 26 يوليو 1782[1][2][3][4][5][6][7]  دبلن  الوفاة 23 يناير 1837 (54 سنة) [1][2][3]  موسكو[7]  سبب الوفاة ذات الرئة  مواطنة أيرلندا مملكة أ

Siege of MetzPart of the Habsburg-Valois WarMap of Metz during the siegeDate19 October 1552 - 2 January 1553LocationMetz, FranceResult French victoryBelligerents  Holy Roman Empire  Kingdom of FranceCommanders and leaders Charles V of Habsburg Francis, Duke of GuiseStrength 20,000[1]-60,000[2][3] 150 guns[3] 6,000[1][3]Casualties and losses 20,000[1]-30,000[3] Unknown vteItalian War of 1551–1559 Tripoli Mirandola Metz Po…

Porträt Jost Bürgis Jost Bürgi (laut seinem Porträt auch Jobst Bürgi; * 28. Februar 1552 in Lichtensteig/Toggenburg; † 31. Januar 1632 in Kassel) war ein Schweizer Uhrmacher, Instrumentenerfinder, Mathematiker und Astronom. Inhaltsverzeichnis 1 Einleitung 2 Leben 3 Werk als Instrumentenbauer 4 Mathematisches Werk 5 Ehrung 6 Literatur 7 Weblinks 8 Einzelnachweise Einleitung Jahrhundertelang war Jost Bürgi vor allem als Erbauer der ersten astronomisch genutzten Sekundenuhr, als der Herstel…

Sumber Sungai Iller Sungai Iller (nama kuno Ilargus) adalah sebuah sungai di Bayern, Jerman. Sungai ini merupakan anak sungai Donau yang mengalir ke kanan. Panjangnya adalah 147 kilometer. Sumber terletak dekat Oberstdorf di wilayah Unterallgäu dekat Pegunungan Alpen, sekitar perbatasan Austria. Dari sana sungai mengalir ke arah utara, melewati kota Sonthofen, Immenstadt, dan Kempten. Antara Lautrach dekat Ulm dan Memmingen membentuk perbatasan antara dua negara bagian Jerman: Bayern dan Baden-…

2017 studio album by Wolf AliceVisions of a LifeStudio album by Wolf AliceReleased29 September 2017 (2017-09-29)GenreAlternative rocknoise rock • Synth-Pop • Dream Pop • Shoegaze • Post-Punk RevivalLength46:39LabelDirty HitProducerJustin Meldal-JohnsenWolf Alice chronology My Love Is Cool(2015) Visions of a Life(2017) Blue Weekend(2021) Singles from Visions of a Life Yuk FooReleased: 12 June 2017 Don't Delete the KissesReleased: 5 July 2017 Beautifully Unconvention…

Building in California, United States Kappe ResidenceExterior of Kappe Residence as of April 2021Location715 Brooktree, Los Angeles, CaliforniaCoordinates34°2′29″N 118°30′56″W / 34.04139°N 118.51556°W / 34.04139; -118.51556Area4,000 sq. ft.Built1967ArchitectRay KappeGoverning bodyprivate Los Angeles Historic-Cultural MonumentDesignatedApril 16, 1996[1]Reference no.623 Location of Kappe Residence in the Los Angeles metropolitan area The Kappe Resid…

2006 Indian filmShaadi Se PehleDirected bySatish KaushikWritten bySanjay ChelProduced bySubhash GhaiStarringAkshaye KhannaSunil ShettyMallika SherawatAyesha TakiaAftab ShivdasaniCinematographyJohny LalEdited bySanjay VermaMusic byHimesh ReshammiyaDistributed byMukta Arts LtdRelease date 7 April 2006 (2006-04-07) Running time128 minsCountryIndiaLanguageHindiBox office₹ 168.8 million[1] Shaadi Se Pehle (English: Before the Wedding or Before the Marriage) is a 2006 Indian H…

Ruined castle in Switzerland Rudenz CastleBurgruine RudenzGiswil-Rudenz The ruins of Rudenz CastleRudenz CastleCoordinates46°49′57″N 8°11′04″E / 46.832366°N 8.184432°E / 46.832366; 8.184432Typehill castle, spur castleCodeCH-OWSite informationConditionruinSite historyBuilt1200 to 1250Garrison informationOccupantsministeriales Rudenz Castle is a ruined castle atop a hill in the municipality of Giswil in the canton of Obwalden in Switzerland. The castle and surro…

Fantasy novel written by Australian author and illustrator Jenny Hale This article includes a list of references, related reading, or external links, but its sources remain unclear because it lacks inline citations. Please help to improve this article by introducing more precise citations. (April 2010) (Learn how and when to remove this template message) Jatta First editionAuthorJenny HaleCountryAustraliaLanguageEnglishGenreFantasy, Dark Fantasy, Young AdultPublisherScholastic AustraliaPublicati…

Kembali kehalaman sebelumnya

Lokasi Pengunjung: 3.128.200.132