配列から最大値を検索する

30分プログラム、その755。配列から最小値、最大値を検索する - 素人がプログラミングを勉強していたブログにインスパイアされました。
書き始めてすぐに(apply max xs)でいいことに気づいてしまいました。が、それだとつまんないので、色々書いてみました。

使い方

gosh> (maximum-1 '(1 3 2))
3

ソースコード

#! /opt/local/bin/gosh
;; -*- mode:scheme; coding:utf-8 -*-

(define (maximum-1 xs)
  (apply max xs))

(define (maximum-2 xs)
  (if (null? xs)
      xs
      (fold max (car xs) (cdr xs))))

(define (maximum-3 xs)
  (cond
   [(null? xs) '()]
   [(null? (cdr xs)) (car xs)]
   [else
    (max (car xs)
	 (maximum-3 (cdr xs)))]))

(define (maximum-4 xs)
  (car (sort xs >)))