From: =?ISO-8859-15?Q?Daniel_V=F6lkerts?=
Subject: Iterative vs. Recursion Sort Patterns
Date: 
Message-ID: <gg8js2$o8c$03$1@news.t-online.com>
Hi,

we try to implement a insertion sort in PLT Scheme without using loops 
... here is our approach:

Using:

(define (insert-sort oneList)
   (define (sort-element element inputList outputList)
     (debug element inputList outputList)


         (cond
           ((null? inputList) outputList)
           ((null? outputList) (sort-element (car inputList) (cdr 
inputList) (list element)))
           ((> element (car outputList)) (sort-element element (cdr 
inputList) outputList))
           ((< element (car outputList) (sort-element (car inputList) 
(cdr inputList) (cons element outputList))))
           )
         )
   )

   (cond ((null? oneList) '())
         ((atom? oneList) (list oneList))
         (else (sort-element (car oneList) (cdr oneList) '() ))
      ))


Given:
	(insert-sort '(3 2 1))

Works fine. But if the inputlist became (), the first condition in the 
cond-statement matches. We would expect that the program terminates 
returning outputlist. Unfortunately a back tracking was performed. This 
is causing an Error

<: expects type <real number> as 3rd argument, given: (2 3); other 
arguments were: 2 3

Any ideas to prevent this?

TIA,

Daniel
From: Kaz Kylheku
Subject: Re: Iterative vs. Recursion Sort Patterns
Date: 
Message-ID: <20081123114542.307@gmail.com>
On 2008-11-22, Daniel V�lkerts <··@voelkerts.de> wrote:
> Hi,
>
> we try to implement a insertion sort in PLT Scheme without using loops 
> ... here is our approach:

Try comp.lang.scheme maybe?