Let's assume we have a group of values, if we pass the values in as arguments to a function so that the function call looks like such.
(define (function arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8)
;; Return minimum argument
)
How would you, without using lists or the built-in min function, and using the minimum number of comparisons find the smallest argument? I can't identify a way to do so without using lists or using a large number (in my mind) of comparisons between all of the arguments. Does Scheme have some method other than min or some syntax for efficiently finding the smallest value.
You know how the two argument min would be implmented, so why not just implement it locally, and then write the expansion that a list based approach would have. That is:
(define (min x1 x2 x3 x4 x4 x5 x6 x7 x8)
(define (min2 a b)
(if (< a b) a b))
(min2 x1 (min2 x2 (min2 x3 (min2 x4 (min2 x5 (min2 x6 (min2 x7 x8))))))))
That's what any approach is going to boil down to eventually. As malisper correctly points out, you're going to need seven comparisons.
If you wanted to, you could reorder the comparisons and reduce some stack space for nested calls:
(define (min x1 x2 x3 x4 x4 x5 x6 x7 x8)
(define (min2 a b)
(if (< a b) a b))
(min2 (min2 (min2 x1 x2) (min2 x3 x4))
(min2 (min2 x5 x6) (min2 x7 x8))))
That's still seven comparisons, though. At this point, though you're really just looking at different ways of writing the same code, in which case you should look at Another way of writing a mimum value procedure in Scheme?.