<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=108.162.221.30</id>
		<title>explain xkcd - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=108.162.221.30"/>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php/Special:Contributions/108.162.221.30"/>
		<updated>2026-06-24T14:54:28Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=1405:_Meteor&amp;diff=73323</id>
		<title>1405: Meteor</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=1405:_Meteor&amp;diff=73323"/>
				<updated>2014-08-09T20:45:45Z</updated>
		
		<summary type="html">&lt;p&gt;108.162.221.30: /* Meteor &amp;amp; Magma */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 1405&lt;br /&gt;
| date      = August 8, 2014&lt;br /&gt;
| title     = Meteor&lt;br /&gt;
| image     = meteor.png&lt;br /&gt;
| titletext = No, only LAVA is called 'magma' while underground. Any other object underground is called 'lava'.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
This is one of [[Randall]]'s [[:Category:My Hobby|My Hobby]] comics. The author makes semantically incorrect statements to [[356: Nerd Sniping|frustrate nerds]] who know the correct word, and confuse people who don't know the precise word so they can go on to frustrate more nerds.  &lt;br /&gt;
&lt;br /&gt;
[[Cueball]] tells his friend that he found a piece of a {{w|meteor}}. His friend corrects Cueball, telling him that what he found is called {{w|magma}}, and that the phrase &amp;quot;a piece of a meteor&amp;quot; would be correct if the object was in the air, once it hits the ground it is called magma. In doing so he attempts to confuse or annoy Cueball. In truth, {{w|meteorite}} is the expression for a piece of a {{w|meteoroid}} that has landed, only while descending through the atmosphere is it called a {{w|meteor}}. Thus the first statement by him is a true correction of Cueball, but the second one is wrong.&lt;br /&gt;
&lt;br /&gt;
The word &amp;quot;{{w|pedant|pedantic}}&amp;quot; means being overly concerned with being precise. It is usually a pejorative term used to refer to someone who is overly fussy and corrects someone's word choice even when the more ambiguous or slightly incorrect term they used was fine for informal communication. You would tend to believe a pedant, as they would usually know what they are pedantic about. So when he is making wrong statements that seems pedantic he may make people believe him.&lt;br /&gt;
&lt;br /&gt;
The title text expands on the joke, as if the conversation had continued with a confused Cueball responding that he thought magma was underground. Randall attempts to confuse him further by talking about {{w|lava}} which indeed is the expression for magma that has reached the surface. But it's ridiculous to suggest that all other things are called lava when underground. In the sentence he also continues to imply that magma could also be found above ground.&lt;br /&gt;
&lt;br /&gt;
The two sentences thus follows the same pattern with one true but pedantic part to begin with, and then a false statement to confuse the victim.&lt;br /&gt;
&lt;br /&gt;
===Meteor &amp;amp; Magma===&lt;br /&gt;
Here is a list of the terminology that is being muddled:&lt;br /&gt;
* The descent of a small solid body from space:&lt;br /&gt;
** A {{w|meteoroid}} is a small solid body travelling through space outside the atmosphere.&lt;br /&gt;
** A {{w|meteor}} is a streak of light produced by a meteoroid as it burns up in the atmosphere.&lt;br /&gt;
** A {{w|meteorite}} is a piece of a meteoroid remaining after it strikes the ground.&lt;br /&gt;
* Molten rock:&lt;br /&gt;
** {{w|Magma}} flows underground.&lt;br /&gt;
** {{w|Lava}} has been extruded to a planet's surface, as through volcanic eruption.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:[Cueball walks toward his friend holding a rock.]&lt;br /&gt;
:Cueball: Check it out - I got a piece of a meteor!&lt;br /&gt;
:Friend: ''Actually'', it's only called that while falling. Once it lands, it's called ''magma''.&lt;br /&gt;
&lt;br /&gt;
:[Below the frame:]&lt;br /&gt;
:'''My Hobby: Mixing pedantic terms'''&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:My Hobby]]&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;/div&gt;</summary>
		<author><name>108.162.221.30</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Blue_Eyes&amp;diff=70218</id>
		<title>Blue Eyes</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Blue_Eyes&amp;diff=70218"/>
				<updated>2014-06-23T12:50:18Z</updated>
		
		<summary type="html">&lt;p&gt;108.162.221.30: I wrote out a solution and answers to Randall's further questions about the puzzle.  This should be good, so I eliminated the incomplete tag.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;XKCD's [http://xkcd.com/blue_eyes.html Blue eyes] puzzle is a logic puzzle posted around the same time as comic [[169]].  [[Randall]] calls it &amp;quot;the hardest logic puzzle in the world&amp;quot; on its page;  whether or not it really is the hardest is up to speculation.&lt;br /&gt;
&lt;br /&gt;
The page contains two comics.  On the top is [[82: Frame]], and on bottom is [[37: Hyphen]].&lt;br /&gt;
&lt;br /&gt;
==The Puzzle==&lt;br /&gt;
&lt;br /&gt;
  A group of people with assorted eye colors live on an island. They are all perfect logicians -- if a conclusion can be logically deduced, they will do it instantly. No one knows the color of their eyes. Every night at midnight, a ferry stops at the island. Any islanders who have figured out the color of their own eyes then leave the island, and the rest stay. Everyone can see everyone else at all times and keeps a count of the number of people they see with each eye color (excluding themselves), but they cannot otherwise communicate. Everyone on the island knows all the rules in this paragraph.&lt;br /&gt;
  &lt;br /&gt;
  On this island there are 100 blue-eyed people, 100 brown-eyed people, and the Guru (she happens to have green eyes). So any given blue-eyed person can see 100 people with brown eyes and 99 people with blue eyes (and one with green), but that does not tell him his own eye color; as far as he knows the totals could be 101 brown and 99 blue. Or 100 brown, 99 blue, and he could have red eyes.&lt;br /&gt;
  &lt;br /&gt;
  The Guru is allowed to speak once (let's say at noon), on one day in all their endless years on the island. Standing before the islanders, she says the following:&lt;br /&gt;
  &lt;br /&gt;
  &amp;quot;I can see someone who has blue eyes.&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  Who leaves the island, and on what night?&lt;br /&gt;
&lt;br /&gt;
==Solution==&lt;br /&gt;
&lt;br /&gt;
Randal's solution is at [http://xkcd.com/solution.html xkcd.com/solution.html].&lt;br /&gt;
&lt;br /&gt;
Here are some observations that help simplify the problem.&lt;br /&gt;
&lt;br /&gt;
No one without blue eyes will ever leave the island, because they are given no information that can allow them to determine which non-blue eye color they have.  The presence of the non-blue-eyed people is not relevant at all.  We can ignore them.  All that matters is when the blue eyed people learn that they actually are blue-eyed.&lt;br /&gt;
&lt;br /&gt;
There are two ways in which blue-eyed people might leave the island.  A lone blue-eyed person might leave on the first night because she can see that no one else has blue eyes, so the guru must have been talking about her.  Or an accompanied blue-eyed person can leave on a later night, after noticing that other blue-eyed people have behaved in a way that indicates that they have noticed that her eyes are blue too.&lt;br /&gt;
&lt;br /&gt;
The problem is symmetrical for all blue-eyed people, so this means they will either all leave at once or all stay forever.&lt;br /&gt;
&lt;br /&gt;
'''Theorem:'''  If there are N blue-eyed people, they will all leave on the Nth night.&lt;br /&gt;
&lt;br /&gt;
'''Intuitive Proof.'''&lt;br /&gt;
&lt;br /&gt;
Imagine a simpler version of the puzzle in which, on day #1 the guru announces that she can see at least 1 blue-eyed person, on day #2 she announces that she can see at least 2 blue eyed people, and so on until the blue-eyed people leave. &lt;br /&gt;
&lt;br /&gt;
So long as the guru's count of blue-eyed people doesn't exceed your own, then her announcement won't prompt you to leave.  But as soon as the guru announces having seen more blue-eyed people than you've seen yourself, then you'll know your eyes must be blue too, so you'll leave that night, as will all the other blue-eyed people.  Hence our theorem obviously holds in this simpler puzzle.&lt;br /&gt;
&lt;br /&gt;
But this &amp;quot;simpler&amp;quot; puzzle is actually perfectly equivalent to the original puzzle.  If there were just one blue-eyed person, she would leave on the first night, so if nobody leaves on the first night, then everybody will know there are at least two blue-eyed people, so there's no need for the guru to announce this on the second day.  Similarly, if there were just two blue-eyed people, they'd then recognize this and leave on the second night, so if nobody leaves on the second night, then there must be a third blue-eyed person inspiring them to stay, so there's no need for the guru to announce this on the third day.  And so on...  The guru's announcements on the later days just tell people things they already could have figured out on their own.&lt;br /&gt;
&lt;br /&gt;
It's obvious that our theorem holds for the &amp;quot;simpler&amp;quot; puzzle, and this &amp;quot;simpler&amp;quot; puzzle is perfectly equivalent to the original puzzle, so our theorem must hold for the original puzzle too.&lt;br /&gt;
&lt;br /&gt;
'''Formal Proof.'''&lt;br /&gt;
&lt;br /&gt;
To prove this more formally, we can use mathematical induction.  To do that, we'll need to show that our theorem holds for the base case of N=1, and we'll need to show that, for any given X, *if* we assume that the theorem holds for any value of N less than X, then it will also hold for N=X.  If we can show both these things, then we'll know the theorem is true for N=1 (the base case), for N=2 (using the inductive step once), for N=3 (using the inductive step a second time) and so on, for whatever value of N you want.&lt;br /&gt;
&lt;br /&gt;
Base case:  N=1.  If there is just one blue-eyed person, she will see that no one else has blue eyes, know that the guru was talking about her, and leave on the first night.&lt;br /&gt;
&lt;br /&gt;
Inductive step:  Here we assume that the theorem holds for any value of N less than some arbitrary X (integer greater than 1), and we need to show that it would then hold for N=X too.  If there are X blue-eyed people, then each will reason as follows:  &amp;quot;I can see that X-1 other people have blue eyes, so either just those X-1 people have blue eyes, or X people do (them plus me).  If there are just X-1 people with blue eyes, then by our assumption, they'll all leave on night number X-1.  If they don't all leave on night number X-1, then that means that there is an Xth blue-eyed person in addition to the X-1 that I can see, namely me.  So if they all stay past night number X-1, then I'll know I have blue eyes, so I'll leave on night number X.  Of course, they'll also be in exactly the same circumstance as me, so they'll leave on night number X too.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This suffices to prove our theorem.  The base case tells us the theorem holds for N=1.  That together with the inductive step tells us that it therefore holds for N=2, and that together with the inductive step again tells us that it holds for N=3, and so on...  In particular, it holds for the case the original puzzle asked about, N=100, so we get the conclusion that the 100 blue-eyed people will leave on the 100th night.&lt;br /&gt;
&lt;br /&gt;
==Randall's thought-provoking questions==&lt;br /&gt;
&lt;br /&gt;
After giving his solution, Randall posed three questions for further thought about the puzzle.  (I'll answer them in a different order than he asked.)&lt;br /&gt;
&lt;br /&gt;
'' '''Question 2.''' Each person knows, from the beginning, that there are no less than 99 blue-eyed people on the island. How, then, is considering the 1 and 2-person cases relevant, if they can all rule them out immediately as possibilities?''&lt;br /&gt;
&lt;br /&gt;
Blue-eyed people can't see their own faces, so blue-eyed people can see one less blue-eyed face than non-blue-eyed people can.  Even though I can see that there are at least 99 blue-eyed people, I don't know that they can see that, so I need to imagine people who see only 98, who would base their actions in part by imagining people who can see only 97 who would base their actions in part by imagining people who can see only 96, and so on...  All the levels are relevant.  (It's like [https://www.youtube.com/watch?v=U_eZmEiyTo0 the Princess Bride scene] where Vizzini is trying to think about what Wesley would choose in part based upon Wesley thinking about what Vizzini would choose in part based upon...  &amp;quot;So clearly I cannot choose the one in front of me!&amp;quot;)  Each layer of thinking about what someone else might be thinking about can decrement by 1 the number of blue-eyed people visible to the lattermost imagined person, so it turns out that even the base case with N=1 blue-eyed person is relevant.  As the days go by, some of the more far-fetched &amp;quot;he might be thinking that I might be thinking that he might be thinking that I might be thinking that...&amp;quot; hypotheses get ruled out.  But it's only after night N-1 that the blue-eyed people rule out all the possibilities in which they have brown eyes, whereas the brown-eyed people only learn on night number N that they don't have blue eyes.&lt;br /&gt;
&lt;br /&gt;
It might help to think of all the different situations people might be in.  (Remember brown-eyed people always are situated where they can see one more blue-eyed face than blue-eyed people can.)&lt;br /&gt;
&lt;br /&gt;
  '''Situation 0.''' If I see 0 blue-eyed people, I can leave right after the announcement on night 1.&lt;br /&gt;
  '''Situation 1.''' If I see 1 blue-eyed person, then she might be in situation 0 and about to leave on night 1; or else she might be in situation 1 just like me, in which case we'll both leave together on night 2.&lt;br /&gt;
  '''Situation 2.''' If I see 2 blue-eyed people, they might each be in situation 1 watching to see whether anyone in situation 0 leaves the first night (I know nobody will leave that night, but they wouldn't know this), in which case they would leave together on night 2; or else they might be in situation 2 just like me, in which case we'll all leave together on night 3.&lt;br /&gt;
  :&lt;br /&gt;
  :&lt;br /&gt;
  '''Situation N.''' If I see N blue-eyed people, they might be in situation N-1 watching to see whether any people in situation N-2 leave on night N-1 (I know nobody will leave that night, but they wouldn't know this), in which case they would leave together on night N; or else they might be in situation N just like me, in which case we'll all leave together on night N+1.&lt;br /&gt;
  :&lt;br /&gt;
  :&lt;br /&gt;
&lt;br /&gt;
Even though I start out in situation 99, I need to worry that the blue-eyed people might be in situation 98, so I need to wait long enough for people in situation 98 to figure out what's going on, and then see whether they act like they are indeed in situation 98.  But if they're in situation 98, then they're worrying about whether all the blue-eyed people might be in situation 97, so they're going to need to wait long enough for people in situation 97 to figure out what's going on.  Of course, that requires waiting long enough for people in situation 96 to figure out what's going on, and so on, down all the way to situation 0.  All the levels are relevant, and it takes a separate day to eliminate each level, which is why the whole process takes N days.&lt;br /&gt;
&lt;br /&gt;
'' '''Question 3.''' Why do they have to wait 99 nights if, on the first 98 or so of these nights, they're simply verifying something that they already know?&lt;br /&gt;
''&lt;br /&gt;
&lt;br /&gt;
Consider an analogy.  I've heard that miners used to take canaries down into mines because canaries pass out more quickly in poor air than miners do.  Suppose you know the canary will do fine for 98 or so seconds, and then pass out if the air is bad.  As you watch the canary for those 98 seconds, there's a sense in which you're just verifying something you already know (it'll do fine), but it seems more accurate to say that your best detector for the quality of the air takes 98 seconds to give you a reading, and you're waiting 98 seconds to see what that reading is.&lt;br /&gt;
&lt;br /&gt;
When the blue-eyed people wait 98 or so days to leave, that's because their best available detector of their own eye-color takes 98 or so days to give a reading.  (This detector involves watching what the other blue-eyed people do, and of course they themselves are waiting on a detector that takes 97 or so days to yield its result...)  There's a sense in which they're &amp;quot;simply verifying something that they already know&amp;quot;, but it seems more accurate to say that they're waiting for their best available detector of their own eye-color to deliver its reading. &lt;br /&gt;
&lt;br /&gt;
'' '''Question 1.''' What is the quantified piece of information that the Guru provides that each person did not already have?''&lt;br /&gt;
&lt;br /&gt;
Before the Guru speaks, no one has any information about their own eye color.  For all I know, my eye color could be a unique glowing red.&lt;br /&gt;
&lt;br /&gt;
If the guru names a unique eye color, then that immediately informs the person with that color what their eye color is.&lt;br /&gt;
&lt;br /&gt;
If the guru names a non-unique eye color, then given people's commonly known proclivities for leaving the island, this sets in motion a slow counter, ensuring that the N people with that eye color will discover this when nobody leaves on night number N-1, and when those people leave on night N, the rest of the population will then learn that they don't have that eye color.  The primary information conveyed by the Guru's message is just that such a counter has been started.&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta]]&lt;/div&gt;</summary>
		<author><name>108.162.221.30</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=1270:_Functional&amp;diff=70145</id>
		<title>1270: Functional</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=1270:_Functional&amp;diff=70145"/>
				<updated>2014-06-21T21:28:14Z</updated>
		
		<summary type="html">&lt;p&gt;108.162.221.30: added a shorter explanation that seemed more to the point than the long one that was present, though i left that as a &amp;quot;longer explanation&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 1270&lt;br /&gt;
| date      = September 27, 2013&lt;br /&gt;
| title     = Functional&lt;br /&gt;
| image     = functional.png&lt;br /&gt;
| titletext = Functional programming combines the flexibility and power of abstract mathematics with the intuitive clarity of abstract mathematics.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Brief Explanation==&lt;br /&gt;
[[White Hat]] questions [[Cueball]]'s faith in {{w|functional programming}}. [[Cueball]] responds saying, &amp;quot;Tail recursion is its own reward.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{w|Functional_programming|Functional programming}} is a style of computer programming that uses only function calls, and not other traditional programming tools like loops.  Functional programming often uses {{w|Recursion (computer science)|recursive functions}} to serve the same purpose that loops serve in other programming languages.  A recursive function calls itself again, typically with slightly different arguments.  E.g., the following {{w|Factorial|factorial function}} is recursive because it calls itself again for any argument value n greater than 1.&lt;br /&gt;
&lt;br /&gt;
 factorial(n):&lt;br /&gt;
     if n &amp;gt; 1:&lt;br /&gt;
         return n * factorial(n-1)&lt;br /&gt;
     else:&lt;br /&gt;
         return 1&lt;br /&gt;
&lt;br /&gt;
{{w|Tail_call|Tail recursion}} is a particular sort of recursion that often compiles into more efficient code (see the longer explanation below), but the differences between tail recursion and other sorts of recursion aren't important to the humor of this comic.&lt;br /&gt;
&lt;br /&gt;
The comic is a pun on two readings of &amp;quot;Tail recursion is its own reward&amp;quot;.  The expression &amp;quot;X is its own reward&amp;quot; often is used to suggest that X is {{w|intrinsic_value_(ethics)|intrinsically valuable}} in its own right.  Some (but not all) programmers and mathematicians find recursive functions elegant and intrinsically pleasing, so would take tail recursion to be its own reward in this sense.  Since recursive functions call themselves again, and make use of the resulting values, there is also a sense in which recursive functions  also serve as their own &amp;quot;reward&amp;quot; -- i.e., the recursive function itself returns the values that the function requires to perform its tasks.  So even if you don't find tail recursion intrinsically pleasing, there is still this technical sense in which it is its own reward anyway.&lt;br /&gt;
&lt;br /&gt;
The title text is humorous in part because it violates two expectations.  First, expressions of the form &amp;quot;X combines some trait of Y with some trait of Z&amp;quot; usually talk about combining traits of two different things (i.e., Y is not equal to Z) whereas this text surprises the reader by having &amp;quot;abstract mathematics&amp;quot; occupy the role of both Y and Z.  And second, such expressions usually list two positive traits.  The first listed trait (the &amp;quot;flexibility and power of abstract mathematics&amp;quot;) is pretty clearly positive.  However the second trait (the &amp;quot;intuitive clarity of abstract mathematics&amp;quot;) is less clearly positive.  Many people actually find abstract mathematics to be quite lacking in intuitive clarity, and for much the same reasons many people often find functional programming also to be lacking in intuitive clarity.  So the title text invites the reader to puzzle over whether it really is a positive thing for functional programming to be able to claim to match the &amp;quot;intuitive clarity of abstract mathematics&amp;quot;, or whether Russell might instead have just smacked functional programming with a funny {{w|backhanded compliment}}.&lt;br /&gt;
&lt;br /&gt;
==Longer Explanation==&lt;br /&gt;
{{incomplete|The concept of functional programming is not explained yet, it is debated if that should be explained before explaining recursion or afterwards or if at all?}}&lt;br /&gt;
Functional programming is a famous paradigm (or style) in modern programming that favors functions that can be evaluated like mathematical functions, i.e., the value returned only depends on the input given. {{w|imperative programming|Imperative programs}} often make use of one or more variables that are external to the function that is currently executing.  This means that an &amp;quot;imperative function&amp;quot; may return a different result for the same input due to changes in a non-local variable, whereas a &amp;quot;functional function&amp;quot; will in theory ALWAYS return the same result for a given input, though in practice the functional programming languages also support the non-local variables.&lt;br /&gt;
&lt;br /&gt;
Unlike {{w|Procedural programming|procedures}}, functions always return a value.  For example, {{w|Sine|sine(x)}} returns 1 when x is 90°. Furthermore, the function may call itself (usually with slightly different parameters), thus effectively starting a loop. This is called {{w|Recursion (computer science)|recursion}}.&lt;br /&gt;
&lt;br /&gt;
In order to {{w|Iteration|iterate}}, imperative programs usually use {{w|Loop (programming)|loops}}.  Functional programs usually use recursion instead.&lt;br /&gt;
&lt;br /&gt;
For example, the {{w|factorial}} function (e.g. &amp;quot;factorial(5) = 5 x 4 x 3 x 2 x 1&amp;quot;) can be coded imperatively as:&lt;br /&gt;
&lt;br /&gt;
 factorial(n):&lt;br /&gt;
     prod = 1&lt;br /&gt;
     while n &amp;gt; 0:&lt;br /&gt;
         prod = prod * n&lt;br /&gt;
         n = n - 1&lt;br /&gt;
     end&lt;br /&gt;
     return prod&lt;br /&gt;
&lt;br /&gt;
An imperative, recursive (but not tail-recursive) implementation can look like this:&lt;br /&gt;
&lt;br /&gt;
 factorial(n):&lt;br /&gt;
     if n &amp;gt; 0:&lt;br /&gt;
         return n * factorial(n-1)&lt;br /&gt;
     else:&lt;br /&gt;
         return 1&lt;br /&gt;
&lt;br /&gt;
In this situation, the recursion stops when the argument (n) is not greater than zero. Without the conditional definition, it would be an infinite loop. {{w|Tail recursion}} is a special case of recursion whose very '''last''' operation is to invoke the function itself or return a definite value.  The previous example is not tail-recursive, since after the call to &amp;quot;factorial(n-1)&amp;quot;, the returned value has to be multiplied by n.&lt;br /&gt;
&lt;br /&gt;
This (functional) example is tail recursive inside the helper function:&lt;br /&gt;
&amp;lt;!-- This is a valid Haskell definition of the factorial function: http://ideone.com/OrCUMp&lt;br /&gt;
  It is not really helpful to jump from imperative to functional at this point. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 factorial(n) = factorial_helper(n, 1)&lt;br /&gt;
 &lt;br /&gt;
 factorial_helper(n, prod) = &lt;br /&gt;
     if n &amp;gt; 0 then&lt;br /&gt;
         factorial_helper(n - 1, prod * n)&lt;br /&gt;
     else&lt;br /&gt;
         prod&lt;br /&gt;
&lt;br /&gt;
e.g.&lt;br /&gt;
 factorial(5) = factorial_helper(5, 1)&lt;br /&gt;
  factorial_helper(5,1) = factorial_helper(5-1, 1*5)&lt;br /&gt;
   factorial_helper(4,5) = factorial_helper(4-1, 5*4)&lt;br /&gt;
    factorial_helper(3,20) = factorial_helper(3-1, 20*3)&lt;br /&gt;
     factorial_helper(2,60) = factorial_helper(2-1, 60*2)&lt;br /&gt;
      factorial_helper(1,120) = factorial_helper(1-1, 120*1)&lt;br /&gt;
       factorial_helper(0,120) = 120&lt;br /&gt;
&lt;br /&gt;
In functional programming, tail recursion is detected by the compiler or interpreter and can be executed as efficiently as loops in imperative programming languages. This makes tail recursion an essential programming technique in functional programming.&lt;br /&gt;
&lt;br /&gt;
Cueball is making a play on words where &amp;quot;Tail recursion is its own reward&amp;quot; is used both in the &amp;quot;it is worth doing on elegance and intellectually satisfying grounds alone&amp;quot; sense and in the sense that &amp;quot;the 'tail call' of a function is its final step, and is the final step (and hence the result/reward) for ''all levels'' of a tail-recursive function&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The title text says that to {{w|Abstract mathematics|abstract mathematicians}} functional programming is both powerful and flexible, as well as intuitive and clear since it comes very close to the way mathematicians usually describe functions. The humorous contrast is that, to non-mathematicians including the software engineers, functional programming can be exactly the opposite (thus being non-intuitive and unclear as abstract mathematics appears to them). Even the mathematicians often spend years of work to discover the subtle mistakes in the lengthy proofs. This leaves the reader unclear as to whether the statement is sarcastic or not. And it is also a reference to a common saying among the fans of functional programming about the imperative programming language, 'C': &amp;quot;C combines the flexibility and power of {{w|assembly language}} with the user-friendliness of assembly language&amp;quot;, which is a humorous take on the original saying &amp;quot;C combines the flexibility and power of {{w|assembly language}} with the user-friendliness of a high-level language&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:[White Hat stands behind Cueball, who is sitting at a computer]&lt;br /&gt;
:White Hat: Why do you like functional programming so much? What does it actually ''get'' you?&lt;br /&gt;
:Cueball: Tail recursion is its own reward.&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:Comics featuring White Hat]]&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Programming]]&lt;br /&gt;
[[Category:Recursion]]&lt;/div&gt;</summary>
		<author><name>108.162.221.30</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:1382:_Rocket_Packs&amp;diff=69641</id>
		<title>Talk:1382: Rocket Packs</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:1382:_Rocket_Packs&amp;diff=69641"/>
				<updated>2014-06-16T07:53:08Z</updated>
		
		<summary type="html">&lt;p&gt;108.162.221.30: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I think long fall boots (from Portal) would probably help with this.&lt;br /&gt;
[[Special:Contributions/173.245.56.65|173.245.56.65]] 04:34, 16 June 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
I was thinking a chair design with the legs pulled out in front might help out. {{unsigned ip|199.27.133.174}}&lt;br /&gt;
&lt;br /&gt;
Wear the jet pack on your chest, avoid calf-burn. But don't mention the genitals. [[Special:Contributions/141.101.104.61|141.101.104.61]] 05:13, 16 June 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
Is it really so hard to invent calf shields? [[Special:Contributions/108.162.221.30|108.162.221.30]] 07:53, 16 June 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>108.162.221.30</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=216:_Romantic_Drama_Equation&amp;diff=57537</id>
		<title>216: Romantic Drama Equation</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=216:_Romantic_Drama_Equation&amp;diff=57537"/>
				<updated>2014-01-13T04:25:03Z</updated>
		
		<summary type="html">&lt;p&gt;108.162.221.30: /* Explanation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 216&lt;br /&gt;
| date      = January 29, 2007&lt;br /&gt;
| title     = Romantic Drama Equation&lt;br /&gt;
| image     = romantic drama equation.png&lt;br /&gt;
| titletext = Real-life prospective-pairing curves over things like age can get depressing.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
{{incomplete|The formulars are missing}}&lt;br /&gt;
The equations in the comic and the graph show how many different love pairs can be made if you know the number of females and males in a group. The text explains that it was inspired by TV Romantic Drama (in this case, the gay drama {{w|Queer as Folk (U.S. TV series)|Queer as Folk}}), but of course the formula is valid for any group of people. There are two graphs and equations - gay option is the case when we are looking for pairs with same gender, straight option in for heterosexual equations. The interesting/funny part about the results is that in most cases there are more possibilities when we consider the homosexual option. Also it is interesting to observe what is kind of obvious - in the heterosexual case the &amp;quot;best&amp;quot; case is if both genders are present equally and the possibilities drop very fast if there is substantial difference between genders.&lt;br /&gt;
&lt;br /&gt;
It should be noted that the chart assumes that the ENTIRE cast, male AND female, will ALL be of the same sexuality (homo OR hetero).&lt;br /&gt;
&lt;br /&gt;
The graph makes a note that it only holds true for large casts. Case in point, with a cast of only four people: a two-to-two female-to-male ratio will have four straight pairings to two gay pairings, while a three-to-one female-to-male ratio will have three straight pairings and three gay pairings.&lt;br /&gt;
&lt;br /&gt;
The title-text mentions that Randall made a chart of his own prospective dating pool as he gets older, and was depressed by the results.&lt;br /&gt;
&lt;br /&gt;
'''The formulas may be derived as follows:'''&lt;br /&gt;
&lt;br /&gt;
Each straight couple needs to include one of the x males and one of the (n-x) females so there are x(n-x) possible ways of combining one of each.  E.g., if there are n=5 people, of whom x=2 are male, then there will be 3 possible pairings involving the first male, and three possible pairings involving the second yielding 2(5-2)=6 possible pairings.&lt;br /&gt;
&lt;br /&gt;
Each gay couple needs to include either two males or two females.  To choose two males, we can start with any of the x males and choose any of the (x-1) remaining males.  However, that counts each possible pairing twice.  E.g., Adam&amp;amp;Steve got counted when we chose Adam first and Steve second, and again when we chose Steve first and Adam second.  To avoid double counting the possible couples, we therefore need to divide that total by 2.  So there are x(x-1)/2 possible male-male pairings.  Similar reasoning involving the (n-x) females tells us that there are (n-x)(n-x-1)/2 possible female-female pairings.  Multiplying these out and combining the male and lesbian couples together, we get the total number of possible gay couples is [x^2 - x  +  n^2 - nx - n - xn + x^2 + x]/2.  That simplifies to [n^2 - n   +   2 x^2 - 2 xn]/2.  The left two terms can be combined together as n(n-1) and the right two terms can be combined together as 2x(x-n).  Since the sum of these terms was divided by 2, we get that the total number of possible same-sex pairs is n(n-1)/2 + x(x-n), which is what the cartoon says.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:TV Romantic Drama Equation (Derived during a series of &amp;quot;Queer as Folk&amp;quot; episodes)&lt;br /&gt;
:[A table shows equations for possible romantic pairings in a TV show. The equation under &amp;quot;gay&amp;quot; is n(n-1)/2+x(x-n); the equation under &amp;quot;straight&amp;quot; is x(n-x).]&lt;br /&gt;
:x: Number of male (or female) cast members.&lt;br /&gt;
:n: total number of cast members.&lt;br /&gt;
:[A graph plots pairings (for large casts) against cast makeup. Each of the above equations forms a curve. &amp;quot;Gay cast&amp;quot; starts high for an all male cast, dips down at 50/50 cast makeup, and then rises again for all female. &amp;quot;Straight cast&amp;quot; starts at zero for an all male cast, peaks at 50/50 cast makeup, and then drops to zero again for an all female cast. The two curves intersect at two points close to the middle.]&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:Charts]]&lt;br /&gt;
[[Category:Math]]&lt;br /&gt;
[[Category:Romance]]&lt;/div&gt;</summary>
		<author><name>108.162.221.30</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=559:_No_Pun_Intended&amp;diff=57536</id>
		<title>559: No Pun Intended</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=559:_No_Pun_Intended&amp;diff=57536"/>
				<updated>2014-01-13T03:47:21Z</updated>
		
		<summary type="html">&lt;p&gt;108.162.221.30: /* Explanation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 559&lt;br /&gt;
| date      = March 23, 2009&lt;br /&gt;
| title     = No Pun Intended&lt;br /&gt;
| image     = no_pun_intended.png&lt;br /&gt;
| titletext = Like spelling 'dammit' correctly -- with two m's -- it's a troll that works best on the most literate.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
{{incomplete|This needs more detail, especially as it doesn't really explain the punchline.}}&lt;br /&gt;
&amp;quot;No pun intended&amp;quot; is an idiom meaning that something just said wasn't meant to be a pun, implying that the preceding statement could be interpreted as one. As done in the comic, following a non-pun with &amp;quot;no pun intended&amp;quot; breaks this implication and confuses listeners.&lt;br /&gt;
&lt;br /&gt;
The title text elicits a similar confused reaction, as the most literate people will be more likely to want to spell out &amp;quot;damn it&amp;quot; rather than using an abbreviated form with morphed spelling.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:My Hobby: Appending &amp;quot;no pun intended&amp;quot; to lines with no pun in them.&lt;br /&gt;
:[Cueball is talking to Beret Guy.]&lt;br /&gt;
:Cueball: I think he's internalized his girlfriend's attitudes - no pun intended - and so...&lt;br /&gt;
:Three hours later:&lt;br /&gt;
:[Beret Guy is thinking.]&lt;br /&gt;
:Beret Guy: &amp;quot;Internalized?&amp;quot; Lied? Analyzed? Or is it &amp;quot;attitudes&amp;quot;? Dammit.&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:My Hobby]]&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Comics featuring Beret Guy]]&lt;/div&gt;</summary>
		<author><name>108.162.221.30</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:1305:_Undocumented_Feature&amp;diff=55484</id>
		<title>Talk:1305: Undocumented Feature</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:1305:_Undocumented_Feature&amp;diff=55484"/>
				<updated>2013-12-18T14:15:32Z</updated>
		
		<summary type="html">&lt;p&gt;108.162.221.30: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This sound pretty cool... Anyone know if it's real or which tool it's in? [[Special:Contributions/173.245.55.222|173.245.55.222]] 05:53, 18 December 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
* its real, there are 8 other users, but must stay a secret. {{unsigned ip|108.162.231.233}}&lt;br /&gt;
&lt;br /&gt;
* There is no secret chat room, stop looking for it. It doesn't exist. Look for your own island on the interweb, don't come spoil ours. [[User:scr_admin|scr_admin]]&lt;br /&gt;
&lt;br /&gt;
Okay, let's be honest: how many of us, upon seeing today's comic, immediately went here to see if it was real or not? --[[Special:Contributions/108.162.245.4|108.162.245.4]] 07:47, 18 December 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
* I honestly did just that. --[[Special:Contributions/173.245.53.137|173.245.53.137]] 08:06, 18 December 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
* I also just did that... [[Special:Contributions/108.162.231.206|108.162.231.206]] 08:07, 18 December 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
* I didn't start up my VM to test it, but I came here to see if was real &amp;gt;.&amp;lt; [[Special:Contributions/108.162.216.56|108.162.216.56]] 09:47, 18 December 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
* I also did that. But I take that, if it is real and someone uncovers it, it may destroy that community... [[Special:Contributions/173.245.53.123|173.245.53.123]] 10:28, 18 December 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
* Same here. If it is real, I sincerely hope Randall has a) wiresharked it to find out where this chat room resides so he can prod the admin if it ever goes down b) has a backup plan to migrate himself and his friends to some other private chat room. It won't have the same mystery surrounding it, but at least it's something. [[Special:Contributions/108.162.231.222|108.162.231.222]] 10:51, 18 December 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
It's not about Youtube, but Facebook, which just launched AUTOPLAYING video ads. Look at the title text, it's about Facebook's real name policy. [[Special:Contributions/108.162.231.232|108.162.231.232]] 08:11, 18 December 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
I just searched after reading - and found this site! -- {{unsigned ip|141.101.99.247}}&lt;br /&gt;
&lt;br /&gt;
* The real secret place is here! {{unsigned ip|108.162.229.75}}&lt;br /&gt;
&lt;br /&gt;
* So THIS is the secret chat [[Special:Contributions/108.162.229.7|108.162.229.7]] 09:50, 18 December 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
* One day this place will be forgotten and so will we. --[[Special:Contributions/108.162.231.197|108.162.231.197]] 09:52, 18 December 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
anyone else recognizes the wonderful tcp-ip explanation movie of Ericsson [http://www.youtube.com/watch?v=hymzoUpM0K0 Dawn of the net] in frames 6 till 10? [User:Tesshavon|Tesshavon]] ([[User talk:Tesshavon|talk]])&lt;br /&gt;
&lt;br /&gt;
* Tesshavon you're in my mind ! Also, the 6th frame is comes from one of the most common Friends posters (see e.g. here : [http://www.infinitydish.com/tvblog/wp-content/uploads/2012/01/Friends-friends-69087_1024_768.jpg Friends] ) [[User:dandraka|dandraka]]&lt;br /&gt;
&lt;br /&gt;
It's true.   Small online communities offer a more folksy experience than the online giants.  Some of the best places to hang out are BBS's that made it onto the Internet and have been there for 25+ years. {{unsigned ip|216.150.130.111}}&lt;br /&gt;
&lt;br /&gt;
Well there's always IRC...&lt;/div&gt;</summary>
		<author><name>108.162.221.30</name></author>	</entry>

	</feed>