[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Shootout] Ackermann.bat



Are we supposed to handle error conditions?

For example, this script fails if you run it with no arguments.

I was thinking:

#!/usr/bin/env mzscheme -r

(define (ack m n)
  (cond ((zero? m) (+ n 1))
        ((zero? n) (ack (- m 1) 1))
        (else      (ack (- m 1) (ack m (- n 1))))))

(define (main args)
  (let ((n (if (= (vector-length args) 0)
               1
               (string->number (vector-ref args 0)))))
    (printf "Ack(3,~a): ~a" n (ack 3 n))))

(main (current-command-line-arguments))

-Brent

> -----Original Message-----
> From: Jens Axel Søgaard [mailto:js@vgt-gym.dk]
> Sent: Wednesday, March 27, 2002 11:04 AM
> To: plt-scheme@fast.cs.utah.edu
> Subject: [Shootout] Ackermann.bat
> 
> 
> ; @echo off
> ; mzscheme.exe -f ackermann.bat -mvC %1
> ; goto :end
> 
> (define (main args)
>   (let ([n (string->number (car  args))])
>     (print-list "Ack(3," n "): " (ack 3 n))))
> 
> (define (ack m n)
>   (cond ((zero? m) (+ n 1))
>     ((zero? n) (ack (- m 1) 1))
>     (else      (ack (- m 1) (ack m (- n 1))))))
> 
> (define (print-list . items) (for-each display items))
> 
> ; :end
>