;;; (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)) ;; (declare myfunc () (int)) (define myfunc ((cons x _)) (plus x x)) (declare mybar () (int)) (define mybar () (plus 3 4)) (define/override (plus bool) (true _) true) (define/override (plus bool) (_ true) true) (define/override (plus bool) (_ _) false) ;;; (define/override (plus bool) (_ _) 1) ;;; (define/override (plus list) (nil ys) ys) ;;; (define/override (plus list) ((cons x xs) ys) (cons x (plus xs ys))) (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 mydup (x) (myfunc (cons x nil))) (define start* () (mydup 3)) (define start () (let ((list-1 (cons 1 (cons 2 nil))) (list-2 (cons 3 (cons 4 (cons 5 nil))))) (plus list-1 list-2)))))