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
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?