Fat comma explained

The fat comma (also termed hash rocket in Ruby and a fat arrow in JavaScript) is a syntactic construction that appears in a position in a function call (or definition) where a comma would usually appear. The original usage refers to the ")letters:(" construction in ALGOL 60. Newer usage refers to the "=>" operator present in some programming languages. It is primarily associated with PHP, Ruby and Perl programming languages, which use it to declare hashes. Using a fat comma to bind key-value pairs in a hash, instead of using a comma, is considered an example of good idiomatic Perl.[1] In CoffeeScript and TypeScript, the fat comma is used to declare a function that is bound to this.[2] [3]

  1. a typical, idiomatic use of the fat comma in Perl

my %hash = (first_name => "Larry", last_name => "Wall",);

Subtleties

ALGOL 60

The ALGOL "fat comma" is semantically identical to the comma.[4] In particular, whether letter strings are used, and what their contents are, need not match between the definition of a function and its uses. The following are equivalent:S(s-5, T, P)S(s-5) t: (T) p: (P)S(s-5) Temperature: (T) Pressure: (P)

Perl

The "fat comma" forces the word to its left to be interpreted as a string.[5]

Thus, where this would produce a run-time error under strict (barewords are not allowed):%bad_example = (bad_bareword, "not so cool");the following use of the fat comma would be legal and idiomatic:%good_example = (converted_to_string => "very monkish");This is because the token converted_to_string would be converted to the string literal "converted_to_string" which is a legal argument in a hash key assignment.The result is easier-to-read code, with a stronger emphasis on the name-value pairing of associative arrays.

PHP

In PHP, the fat comma is termed a double arrow, and is used to specify key/value relationships when declaring an array. Unlike in Perl, the double arrow does not treat what comes before it as a bare word, but rather evaluates it. Hence, constants used with the double arrow will be evaluated:$array = array("name" => "PHP", "influences" => array("Perl", "C", "C++", "Java", "Tcl"));

Ruby

In Ruby, the fat comma is the token to create hashes. Ruby 1.9 introduced a special syntax to use symbols as barewords.[6] In Ruby, the fat comma is called a hash rocket.[7]

  1. Old syntax

old_hash =

  1. New syntax (Ruby >= 1.9)

new_hash =

Use as lambda functions

The fat arrow is used to declare single expression anonymous functions in JavaScript,[8] and C sharp.[9]

Notes and References

  1. Book: Conway, Damian. Damian Conway

    . Damian Conway. Allison Randal and Tatiana Appandi. Perl Best Practices. 2005. O'Reilly Media, Inc.. 0-596-00173-8. 4: Values and Expressions. 66. Whenever you are creating a list of key/value or name/value pairs, use the "fat comma" (=>) to connect the keys to their corresponding values..

  2. Web site: Ashkenas. Jeremy. Coffeescript Documentation: grammar.coffee. 11 December 2011. https://web.archive.org/web/20120104174350/http://coffeescript.org/documentation/docs/grammar.html. 4 January 2012. dead.
  3. Web site: Handbook – Functions.
  4. http://www.masswerk.at/algol60/report.htm Revised Report on the Algorithmic Language Algol 60
  5. http://perldoc.perl.org/perlop.html#Comma-Operator perldoc.perl.org – perlop – Comma Operator
  6. Web site: Galero. Michael. Ruby 1.9 Hash in Ruby 1.8. 3 April 2008.
  7. Web site: Nash . Phil . I don't like the Ruby 1.9 hash syntax . Logical Friday . 13 July 2011 . dead . https://web.archive.org/web/20110625034400/http://logicalfriday.com/2011/06/20/i-dont-like-the-ruby-1-9-hash-syntax/ . 25 June 2011 .
  8. Web site: Fat arrows in javascript.
  9. Web site: Hacking Sharp Lambda Expressions into Hash Rockets. 20 July 2013.