das ist direkt version 3.

schritt eins war sehr hart. musste noch viel scheme zeug lernen. 2 und 3 war eher piece of cake ;)

FIXME: die zeilen bevor die daten anfangen, hab ich einfach rausgeloescht, das koennte besser sein. FIXME: ich glaub file einlesen koennte einfacher gehen.

#!/usr/bin/scsh \
-o big-scheme -s
!#

(define (datamunge file comment resulter comparer)
  (begin
    (display comment)
    (display
     (car
      (sort-list
       (call-with-input-file file
         (lambda (port)
           (awk ((field-reader (field-splitter (rx (+ (~ white "*" "-"))))) port)
                (record fields)
                ((resultlist (list)))
                (else
                 (cons (list (resulter fields)
                             (comparer fields))
                       resultlist)))))
       (lambda (a b)
         (< (cadr a) (cadr b))))))
    (newline)))

(datamunge "/home/lefant/scheme/code/kata04_data1.txt" "weather"
           car
           (lambda (alist) (- (string->number (list-ref alist 1))
                              (string->number (list-ref alist 2)))))

(datamunge "/home/lefant/scheme/code/kata04_data2.txt" "soccer"
           cadr
           (lambda (alist) (abs (- (string->number (list-ref alist 6))
                                   (string->number (list-ref alist 7))))))