Difference between revisions of "Talk:312: With Apologies to Robert Frost"

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
(Answer question about Lisps allowing mismatched close parens)
Line 17: Line 17:
  
 
I'd just like to point out that I was randomly sent to a few before this comic after first reading #859 ( ( ) thus leaving me oddly satisfied... [[Special:Contributions/108.162.216.147|108.162.216.147]] 08:04, 22 July 2015 (UTC)
 
I'd just like to point out that I was randomly sent to a few before this comic after first reading #859 ( ( ) thus leaving me oddly satisfied... [[Special:Contributions/108.162.216.147|108.162.216.147]] 08:04, 22 July 2015 (UTC)
 +
 +
I feel like writing a comment here, but my computer can only handl- '''SEGMENTATION FAULT'''

Revision as of 17:59, 29 November 2019

Since the wiki is so new, I thought I'd motivate a discussion about the topic here, first, rather than just blindly charging in and mucking up the text on the main page. Later, if there's no objection, I'll merge the points here into the main page.

A few clarifications.

  1. The description is flawed somewhat, in that Lisp (which adherents humorously "insist" means "Lots of Insidiously Silly Parens") is in fact very strict about matching parens. The problem is that parens are ubiquitous; every nontrivial expression starts with an opening paren, and ends with a close paren. This differs from Perl, which, depending on how it's written, may end with a semicolon, closing curly brace, or sometimes even another character.
  2. The comparison between Perl and Lisp is a little off the mark, too. Lisp is a very simple language (structurally; I shan't vouch for conceptually) which has the "elegant" characteristic that programs and data are essentially the same thing: lists of sub-expressions. It is quite easy for a Lisp program to build a data structure which is itself a runnable program. This "feature" is frequently exploited in artificial intelligence circles. Perl, on the other hand, is a haphazard accretion of syntactic oddities so complex that the grammar cannot be modeled using standard compiler tools. On the other hand, it can, with an economy of syntax, perform some very powerful operations, and has a vast library of utility functions that make very complex operations "easy" to do.

Now, putting on the Opinion hat, my take is that the suggestion that the universe is written in Perl refers to the "messiness" of physics, chaos theory, and the like, somehow being attributed to the quirks surfaced by the implementation; if it were to be done again the comparative "elegance" of Lisp would, one is led to believe, result in a universe that at some fundamental level was simpler and more consistent, with predictable beginning and end.

IronyChef (talk) 02:31, 1 August 2012 (EDT)

To what degree is the rigidity of matching parentheses a feature of Lisp and not a feature of specific implementations of it? I remember one of my professors telling me that they used to just throw a bunch of parentheses at the end of the program. I know in at least one implementation, there is at least a variable that, when true, causes the interpreter to ignore extra right parentheses. As for Perl, if you wish to add more information to the explanation about it, then I'd say go ahead. However, at present there's not really any comparison between the two languages at all in the text. I didn't feel that it was especially necessary to understand the details of Perl to get the comic, so I didn't describe it beyond calling it a popular computer programming language. Erenan (talk) 12:03, 1 August 2012 (EDT)
Almost all implementations of Lisp require exact parenthesis matching. The Common Lisp spec requires the reader to issue an error if there's an unmatched right paren. The Scheme spec is less demanding about making the implementation report such errors, but a standards-conforming program still needs matched parens. There are a few exceptions, though. Several Schemes let you use "()", "[]", or "{}" as delimiters. But other than your note about Lispwork's *ignore-extra-right-parens*, I only know of one that deliberately lets you have mismatched parens: Interlisp lets you use "]" to match all the pending open parentheses, up to the most recent "[". So, for instance, you could write "(let [(there (be light])", and the "]" would act like "))". (Genera may have adopted this too; I don't remember offhand.) This didn't seem to take off, though (I suspect comic #859 is relevant). Most Lispers I know just use slime-repl-closing-return (C-RET in the REPL) or slime-close-all-parens-in-sexp (C-c C-] in a Lisp buffer). Piquan (talk) 02:45, 11 February 2018 (UTC)

Lisp rhymes with myth and with, but only if you have a lithp. Think he did that on purpose? 108.162.238.157 14:18, 6 December 2014 (UTC)

I'd just like to point out that I was randomly sent to a few before this comic after first reading #859 ( ( ) thus leaving me oddly satisfied... 108.162.216.147 08:04, 22 July 2015 (UTC)

I feel like writing a comment here, but my computer can only handl- SEGMENTATION FAULT