;;; (C) 2008-2009 Dr. Gergo ERDI (in-package :alef) (parse-and-run `(,@*library* (declare/virtual (plus a) () (a a a)) (define/override (plus int) (x y) (+/int x y)) (deftype tuple (a b) (tuple a b)) (define/override (plus list) (nil _) nil) (define/override (plus list) (_ nil) nil) (define/override (plus list) ((cons x xs) (cons y ys)) (cons (plus x y) (plus xs ys))) (define/override (plus tuple) ((tuple x1 x2) (tuple y1 y2)) (tuple (plus x1 y1) (plus x2 y2))) (define dup (x) (plus x x)) (define start* () (let ((list-1 (cons 1 (cons 2 nil))) (list-2 (cons 3 (cons 4 (cons 5 nil))))) (plus list-1 list-2))) (define start () (dup (tuple (cons 1 (cons 3 nil)) 4)))))