;;; .EnTete "Le-Lisp (c) version 15.2" " " "The Le-Lisp Benchmarks (4)" ;;; .EnPied "ctak.ll" "%" " " ;;; .SuperTitre "The Le-Lisp Benchmarks (4)" ;;; ;;; .Centre "*****************************************************************" ;;; .Centre " Ce fichier est en lecture seule hors du projet ALE de l'INRIA. " ;;; .Centre " Il est maintenu par ILOG SA, 2 Avenue Gallie'ni, 94250 Gentilly " ;;; .Centre " (c) Le-Lisp est une marque de'pose'e de l'INRIA " ;;; .Centre "*****************************************************************" ;;; ;;; .Centre "$Header: ctak.ll,v 1.1 88/10/29 22:10:56 chaillou Exp $" ;;; (4) CTAK -- Version of TAK that uses CATCH and THROW. (defun check-ctak () (check-value '(test-ctak 1) 7)) (defun meter-ctak () (perform-meter '(ctak 18 12 6) 'ctak)) (defun test-ctak (n) (if (eq n 1) (ctak 18 12 6) (repeat n (ctak 18 12 6)))) (defun ctak (x y z) (tag ctak-aux (ctak-aux x y z))) (de ctak-aux (x y z) (if (not (lt y x)) (exit ctak-aux z) (ctak-aux (tag ctak-aux (ctak-aux (sub1 x) y z)) (tag ctak-aux (ctak-aux (sub1 y) z x)) (tag ctak-aux (ctak-aux (sub1 z) x y)))))