comp.lang.ada
 help / color / mirror / Atom feed
From: Paul Rubin <no.email@nospam.invalid>
Subject: Re: Haskell, anyone?
Date: Tue, 17 Nov 2015 20:36:28 -0800
Date: 2015-11-17T20:36:28-08:00	[thread overview]
Message-ID: <874mgjnctv.fsf@nightsong.com> (raw)
In-Reply-To: 0ff849e9-11d7-438d-abf9-853f79348640@googlegroups.com

Hadrien Grasland <hadrien.grasland@gmail.com> writes:
> int iterate_recursion(int n) ...
> int iterate_goto(int n) ...
>
> You have to admit that in the end, the basic approach is almost
> exactly the same, ..."okay, so at the start of the iteration, the input
> parameter is indeed n, but after that, we'll decrement it..."

I don't think so.  In the recursive version, n never changes in the
context of the function being run.  The function is called again with a
new value.  Anyway it's not a big deal, there may be some times when an
iterative loop is slightly more natural, but writing it recursively is
always easy anyway.  There are much bigger issues in FP that take a
really different approach to deal with.  For example, the entire topic
of functional data structures.  Another is the programs-as-proofs
concept in type theory (Haskell doesn't quite reach there seriously, but
Agda does).  Recursion vs iteration is a tiny step along the way.

> Hence my claim that recursion is, indeed, the ultimate goto, including
> when it comes to ease of understanding. Guy Steele will be most
> pleased.

IIRC, he called lambda the ultimate goto because tail calls can be
compiled into jumps.  No biggie.  If you read about continuations in
Scheme, they're a heck of a lot more confusing than recursion. ;-)


  reply	other threads:[~2015-11-18  4:36 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-15 20:42 Haskell, anyone? mockturtle
2015-11-15 20:51 ` Paul Rubin
2015-11-15 20:53 ` Nasser M. Abbasi
2015-11-15 21:50 ` Mark Carroll
2015-11-15 22:11 ` mockturtle
2015-11-15 22:48   ` Nasser M. Abbasi
2015-11-15 23:05     ` Mark Carroll
2015-11-16  4:11       ` Paul Rubin
2015-11-16  5:17         ` Nasser M. Abbasi
2015-11-16  5:48           ` Paul Rubin
2015-11-16  5:59             ` Nasser M. Abbasi
2015-11-16  6:47               ` Paul Rubin
2015-11-16  8:45           ` Simon Wright
2015-11-16 14:38             ` Brian Drummond
2015-11-15 23:19     ` Jeffrey R. Carter
2015-11-16  9:36       ` J-P. Rosen
2015-11-16 18:14         ` Jeffrey R. Carter
2015-11-16  3:59   ` Paul Rubin
2015-11-16  8:33   ` Dmitry A. Kazakov
2015-11-16  9:33     ` mockturtle
2015-11-16  9:45       ` Paul Rubin
2015-11-16 10:25 ` Hadrien Grasland
2015-11-16 11:19   ` Simon Wright
2015-11-16 11:25     ` Hadrien Grasland
2015-11-16 13:59   ` G.B.
2015-11-16 20:24   ` Jeffrey R. Carter
2015-11-16 23:23   ` Paul Rubin
2015-11-17  8:26     ` Dmitry A. Kazakov
2015-11-17  9:10       ` Mark Carroll
2015-11-17 20:09         ` Dmitry A. Kazakov
2015-11-17 10:49     ` Hadrien Grasland
2015-11-17 12:01       ` G.B.
2015-11-17 16:43         ` Hadrien Grasland
2015-11-17 18:04           ` Paul Rubin
2015-11-17 21:42             ` Hadrien Grasland
2015-11-18  4:36               ` Paul Rubin [this message]
2015-11-18  8:48                 ` Hadrien Grasland
2015-11-18  9:23                   ` Paul Rubin
2015-11-18 10:44                     ` Hadrien Grasland
2015-11-18 11:02                       ` Dmitry A. Kazakov
2015-11-18 12:41                         ` G.B.
2015-11-18 23:06                       ` Randy Brukardt
2015-11-19  8:56                         ` Hadrien Grasland
2015-11-19  9:19                           ` Hadrien Grasland
2015-11-19 21:27                           ` Randy Brukardt
2015-11-24 12:03                           ` Jacob Sparre Andersen
2015-11-19  7:22                       ` Paul Rubin
2015-11-19  9:39                         ` Hadrien Grasland
2015-11-17 13:01       ` Thomas Løcke
2015-11-17 16:45         ` Hadrien Grasland
2015-11-18  0:11       ` Paul Rubin
2015-11-18  9:44         ` Hadrien Grasland
2015-12-06 12:59   ` David Thompson
2015-12-07  7:25     ` Hadrien Grasland
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox