(define DoL ((fileVal "Do") 'DoL)) (define determ (cadr (cddddr ((fileVal "Matrix") '() 0 zero? 1 + - * /)))) (define rr ((fileVal "rr") "Seed")) ; random rational (define ((cmp n) f) (lambda (x) (let v ((n n)) (if (= n 0) x (f (v (- n 1))))))) (define (G2 f) (lambda (a b) (let y ((a a)(b b)) (if (null? a) b (if (null? b) a (cons (f (car a) (car b)) (y (cdr a) (cdr b)))))))) (define (Gs f) (lambda (a b) (let y ((b b)) (if (null? b) b (cons (f a (car b)) (y (cdr b))))))) (define (pf n c) (if (= n 0) c (let ((cm (cmp (- n 1)))) (lambda (x) (pf (- n 1) (let u ((c c)) (if (null? c) ((cm list) 0) (((cm G2) +) (car c) (((cm Gs) *) x (u (cdr c))))))))))) (define el (let ((Do ((fileVal "Do") 'Do))) (lambda (n x y z) (let ((row '())(m (+ n 1))) (Do m (lambda (xi) (Do (- m xi) (lambda (yi) (Do (- m (+ xi yi)) (lambda (zi) (set! row (cons (* (expt x xi) (expt y yi) (expt z zi)) row)))))))) row)))) (define (rp n j) (if (= n 0) (rr) (DoL (+ j 1) (lambda (k) (rp (- n 1) (- j k)))))) (define (mat m) (let ((wx (lambda () (let ((b (pf 2 (rp 2 m)))) (lambda (p q) ((b p) q)))))) (let ((xp (wx))(yp (wx))(zp (wx))) (DoL (* (+ m 1)(+ m 2)(+ m 3)(/ 6)) (lambda (dum) (let ((p (rr))(q (rr))) (el m (xp p q) (yp p q) (zp p q)))))))) (determ (mat 1)) ; => 0 (determ (mat 2)) ; does not yield 0! (determ (mat 3)) ; does not yield 0!