(define append (lambda (l item) (if (null? l) (list item) (cons (car l) (append (cdr l) item)) ) ) ) (define overwrite (lambda (l item) (cond ((null? l) l) ((null? (cdr l)) (list item)) (else (cons (car l) (overwrite (cdr l) item))) ) ) ) (define reverse (lambda (l) ; (display l) (if (null? l) l (append (reverse (cdr l)) (car l)) ) ) ) (define swap (lambda (l) (cond ((null? l) l) ((null? (cdr l)) l) (else (cons (car (reverse l)) (cdr (overwrite l (car l))))) ) ) ) (define modify (lambda (i v l) (cond ((null? l) l) ((= i 0) (cons v (cdr l))) (else (cons (car l) (modify (- i 1) v (cdr l)))) ) ) ) (define insertitem (lambda (item sorted) (if (null? sorted) (list item) (if (> item (car sorted)) (cons (car sorted) (insertitem item (cdr sorted))) (cons item sorted) ) ) ) ) (define distance1 (lambda (v1 v2) (if (null? v1) 0.0 (+ (* (- (car v1) (car v2)) (- (car v1) (car v2))) (distance1 (cdr v1) (cdr v2))) ) ) ) (define distance (lambda (v1 v2) (sqrt (distance1 v1 v2)) ) ) (begin (newline) (newline) (display "(swap '(1 2 3 4 5 6 7 8 9)): ") (display (swap '(1 2 3 4 5 6 7 8 9))) (newline) (display "(swap '(10 20 30)): ") (display (swap '(10 20 30))) (newline) ; (display "(modify 2 100 '(2 5 6 10 11 20)) : ") (display (modify 2 100 '(2 5 6 10 11 20))) (newline) ; (display "(modify 10 10 '(2 5 6)) : ") (display (modify 10 10 '(2 5 6))) (newline) ; (display "(distance '(1 2) '(1 2)) : ") (display (distance '(1 2) '(1 2))) (newline) (display "(distance '(1 2 3) '(0 0 0)) : ") (display (distance '(1 2 3) '(0 0 0))) (newline) (newline) () )