<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">Thanks , and after the code that I have
      made ?<br>
      <br>
      Roelof<br>
      <br>
      <br>
      Mike Meyer schreef op 18-2-2015 om 18:18:<br>
    </div>
    <blockquote
cite="mid:CAD=7U2DLimWcA=b0mumKMEgfMk36uu-Lw89eYPkiFKxgXWWC4Q@mail.gmail.com"
      type="cite">
      <div dir="ltr">I think you've almost got it. Let me suggest
        something like:
        <div><br>
        </div>
        <div>main = print $ hanoi 3 'a' 'b' 'c'</div>
        <div><br>
        </div>
        <div>hanoi n start temp end = ...</div>
        <div><br>
        </div>
        <div>for testing.</div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Wed, Feb 18, 2015 at 11:16 AM,
          Roelof Wobben <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor="#FFFFFF" text="#000000">
              <div>3 is not a special case. <br>
                <br>
                I want to use the hanoi function with 3 pegs as a
                starting point. <br>
                <br>
                Roelof<br>
                <br>
                <br>
                <br>
                Joel Neely schreef op 18-2-2015 om 18:11:<br>
              </div>
              <blockquote type="cite">
                <div dir="ltr">
                  <div class="gmail_default"
                    style="font-family:georgia,serif;font-size:small">Why
                    is 3 a special case?</div>
                </div>
                <div class="gmail_extra"><br>
                  <div class="gmail_quote">On Wed, Feb 18, 2015 at 10:35
                    AM, Roelof Wobben <span dir="ltr"><<a
                        moz-do-not-send="true"
                        href="mailto:r.wobben@home.nl" target="_blank">r.wobben@home.nl</a>></span>
                    wrote:<br>
                    <blockquote class="gmail_quote" style="margin:0 0 0
                      .8ex;border-left:1px #ccc solid;padding-left:1ex">Oke,<br>
                      <br>
                      Im thinking of this way<br>
                      <br>
                      hanoi 3 source between end<br>
                      hanoi 1 source _ end = [ (source, end)]<br>
                      hanoi n source between end = hanoi (n-1) xxxx<br>
                                                                       
                            print move somehow.<br>
                      <br>
                      <br>
                      Roelof<br>
                      <br>
                      <br>
                      <br>
                      <br>
                      Dudley Brooks schreef op 18-2-2015 om 17:19:<br>
                      <blockquote class="gmail_quote" style="margin:0 0
                        0 .8ex;border-left:1px #ccc
                        solid;padding-left:1ex"> There are three
                        *locations*.  But there is only one *thing* --
                        only *one at a time*, that is, namely whichever
                        one you are moving on any given move, be it a
                        disc or an entire stack.
                        <div>
                          <div><br>
                            <br>
                            On 2/17/15 11:10 PM, Roelof Wobben wrote:<br>
                            <blockquote class="gmail_quote"
                              style="margin:0 0 0 .8ex;border-left:1px
                              #ccc solid;padding-left:1ex"> That part I
                              understand already.<br>
                              <br>
                              The only thing I do not see is what the
                              base case in this exercise is because you
                              are working with 3 things instead of 1 for
                              example a list.<br>
                              <br>
                              As a example reversing a list recursive<br>
                              <br>
                              the base case is the not reversed list is
                              empty.<br>
                              <br>
                              <br>
                              Roelof<br>
                              <br>
                              <br>
                              <br>
                              Dudley Brooks schreef op 18-2-2015 om
                              8:04:<br>
                              <blockquote class="gmail_quote"
                                style="margin:0 0 0 .8ex;border-left:1px
                                #ccc solid;padding-left:1ex"> On 2/17/15
                                10:56 PM, Dudley Brooks wrote:<br>
                                <blockquote class="gmail_quote"
                                  style="margin:0 0 0
                                  .8ex;border-left:1px #ccc
                                  solid;padding-left:1ex"> On 2/16/15
                                  7:06 PM, Doug McIlroy wrote:<br>
                                  <blockquote class="gmail_quote"
                                    style="margin:0 0 0
                                    .8ex;border-left:1px #ccc
                                    solid;padding-left:1ex">
                                    <blockquote class="gmail_quote"
                                      style="margin:0 0 0
                                      .8ex;border-left:1px #ccc
                                      solid;padding-left:1ex"> My way of
                                      working is one problem at the
                                      time.<br>
                                      So first solve the itterate one
                                      and after that I gonna try to
                                      solve the<br>
                                      recursion one.<br>
                                      Otherwise I get confused.<br>
                                    </blockquote>
                                    This is the crux of the matter. You
                                    must strive to think those thoughts<br>
                                    in the opposite order. Then you
                                    won't get confused.<br>
                                    <br>
                                    Recursion takes a grand simplifying
                                    view: "Are there smaller problems of<br>
                                    the same kind, from the solution(s)
                                    of which we could build a solution
                                    of<br>
                                    the problem at hand?" If so, let's
                                    just believe we have a solver for
                                    the<br>
                                    smaller problems and build on them.
                                    This is the recursive step.<br>
                                    <br>
                                    Of course this can't be done when
                                    you are faced with the smallest<br>
                                    possible problem. Then you have to
                                    tell directly how to solve<br>
                                    it. This is the base case.<br>
                                    <br>
                                    [In Hanoi, the base case might be
                                    taken as how to move a pile<br>
                                    of one disc to another post. Even 
                                    more simply, it might be how<br>
                                    to move a pile of zero
                                    discs--perhaps a curious idea, but
                                    no more<br>
                                    curious than the idea of 0 as a
                                    counting number.]<br>
                                    <br>
                                    A trivial example: how to copy a
                                    list (x:xs) of arbitrary length.<br>
                                    We could do that if we knew how to
                                    copy the smaller list tail, xs.<br>
                                    All we have to do is tack x onto the
                                    head of the copy. Lo, the recipe<br>
                                        copy (x:xs) = x : copy xs<br>
                                    Final detail: when the list has no
                                    elements, there is no smaller<br>
                                    list to copy. We need another rule
                                    for this base case. A copy<br>
                                    of an empty list is empty:<br>
                                        copy [] = []<br>
                                    <br>
                                    With those two rules, we're done. No
                                    iterative reasoning about<br>
                                    copying all the elements of the
                                    list. We can see that afterward,<br>
                                    but that is not how we got to the
                                    solution.<br>
                                    <br>
                                    [It has been suggested that you can
                                    understand recursion thus<br>
                                        > Do the first step.  Then
                                    (to put it very dramatically)<br>
                                        > do *everything else* in *a
                                    single step*!<br>
                                    This point of view works for copy,
                                    and more generally for<br>
                                    "tail recursion", which is trivially
                                    transformable to iteration.<br>
                                    It doesn't work for Hanoi, which
                                    involves a fancier recursion<br>
                                    pattern. The "smaller problem(s)"
                                    formulation does work.]<br>
                                  </blockquote>
                                  <br>
                                  I simplified it (or over-dramatized
                                  it) to the point of
                                  not-quite-correctness.  I was trying
                                  to dramatize the point of how
                                  surprising the idea of recursion is,
                                  when you first encounter it (because I
                                  suspected that the OP had not yet
                                  "grokked" the elegance of recursion)
                                  -- and remembering my own Aha! moment
                                  at recursive definitions and proofs by
                                  induction in high school algebra, back
                                  when the only "high-level" programming
                                  language was assembly.  I see that I
                                  gave the mistaken impression that
                                  that's the *only* kind of recursive
                                  structure. What I should have said,
                                  less dramatically, is<br>
                                  <br>
                                      Do the base case(s)<br>
                                      Then do the recursion -- whatever
                                  steps that might involve, including
                                  possibly several recursive steps and
                                  possibly even several single steps,
                                  interweaved in various possible
                                  orders.<br>
                                  <br>
                                  You can't *start* with the recursion,
                                  or you'll get either an infinite loop
                                  or an error.<br>
                                  <br>
                                  I wouldn't quite call the conversion
                                  of tail-recursion to iteration
                                  trivial, exactly ... you still have to
                                  *do* it, after all!  And when I did CS
                                  in school (a long time ago), the
                                  equivalence had only fairly recently
                                  been recognized. (By computer language
                                  designers, anyway.  Maybe
                                  lambda-calculus mathematicians knew it
                                  long before that.) Certainly the idea
                                  that compilers could do it
                                  automatically was pretty new.  If it
                                  were *completely* trivial, it would
                                  have been recognized long before! ;^)<br>
                                  <br>
                                  If you're younger you probably grew up
                                  when this idea was already
                                  commonplace.  Yesterday's brilliant
                                  insight is today's trivia!<br>
                                </blockquote>
                                <br>
                                BTW, since, as you and several others
                                point out, the recursive solution of
                                Towers of Hanoi does *not* involve tail
                                recursion, that's why it's all the more
                                surprising that there actually is a very
                                simple iterative solution, almost as
                                simple to state as the recursive
                                solution, and certainly easier to
                                understand and follow by a novice or
                                non-programmer, who doesn't think
                                recursively.<br>
                                <blockquote class="gmail_quote"
                                  style="margin:0 0 0
                                  .8ex;border-left:1px #ccc
                                  solid;padding-left:1ex"> <br>
                                  <blockquote class="gmail_quote"
                                    style="margin:0 0 0
                                    .8ex;border-left:1px #ccc
                                    solid;padding-left:1ex"> In many
                                    harder problems a surefire way to
                                    get confused is to<br>
                                    try to think about the sequence of
                                    elementary steps in the final<br>
                                    solution. Hanoi is a good case in
                                    point.<br>
                                    <br>
                                    Eventually you will come to see
                                    recursion as a way to confidently<br>
                                    obtain a solution, even though the
                                    progress of the computation is<br>
                                    too complicated to visualize. It is
                                    not just a succinct way to<br>
                                    express iteration!<br>
                                    <br>
                                    Doug McIlroy<br>
_______________________________________________<br>
                                    Beginners mailing list<br>
                                    <a moz-do-not-send="true"
                                      href="mailto:Beginners@haskell.org"
                                      target="_blank">Beginners@haskell.org</a><br>
                                    <a moz-do-not-send="true"
                                      href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners"
                                      target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
                                  </blockquote>
                                  <br>
                                </blockquote>
                                <br>
_______________________________________________<br>
                                Beginners mailing list<br>
                                <a moz-do-not-send="true"
                                  href="mailto:Beginners@haskell.org"
                                  target="_blank">Beginners@haskell.org</a><br>
                                <a moz-do-not-send="true"
                                  href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners"
                                  target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
                                <br>
                              </blockquote>
                              <br>
                            </blockquote>
                            <br>
                            <br>
                          </div>
                        </div>
                      </blockquote>
                      <div>
                        <div> <br>
_______________________________________________<br>
                          Beginners mailing list<br>
                          <a moz-do-not-send="true"
                            href="mailto:Beginners@haskell.org"
                            target="_blank">Beginners@haskell.org</a><br>
                          <a moz-do-not-send="true"
                            href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners"
                            target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
                        </div>
                      </div>
                    </blockquote>
                  </div>
                  <br>
                  <br clear="all">
                  <span class="HOEnZb"><font color="#888888">
                      <div><br>
                      </div>
                      -- <br>
                      <div>Beauty of style and harmony and grace and
                        good rhythm depend on simplicity. - Plato</div>
                    </font></span></div>
                <span class="HOEnZb"><font color="#888888"> <br>
                    <fieldset></fieldset>
                    <br>
                    <pre>_______________________________________________
Beginners mailing list
<a moz-do-not-send="true" href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a>
<a moz-do-not-send="true" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a>
</pre>
                  </font></span></blockquote>
              <br>
            </div>
            <br>
            _______________________________________________<br>
            Beginners mailing list<br>
            <a moz-do-not-send="true"
              href="mailto:Beginners@haskell.org">Beginners@haskell.org</a><br>
            <a moz-do-not-send="true"
              href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners"
              target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
            <br>
          </blockquote>
        </div>
        <br>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Beginners mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Beginners@haskell.org">Beginners@haskell.org</a>
<a class="moz-txt-link-freetext" href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>