(set! list (lambda l l)) (set! symbolp (lambda (x) (equal (type x) "SYMB"))) (set! defun! (nlambda form (cond ((symbolp (car form)) (set (car form) (apply 'lambda (cdr form)))) (t nil)))) (defun! square (x) (* x x)) (set! defsp! (nlambda form (cond (symbolp (car form)) (set! (car form) (apply nlambda (cdr form)))))) (defsp! cube (x) ((* x x x))) (set! p 5) (square 5) ;; should work (square p) ;; should work (cube 5) ;; should work (cube p) ;; should fail: unbound symbol