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