;;;; Test file for Lisp ;;;; A simple test file (defpackage :foobar (:use :common-lisp-user :common-lisp)) (in-package :foobar) (export '(new-obj mapobj parent call-if-exists ?call call super super-if-exists ?super slot-val slot-obj mset meth meth-func func-meth this meth-owner meth-name set-original-slot *foo-version* *print-foo-objects-verbosely*)) (defconstant *foobar-version* 3 "Foobar's Version Number") (defparameter *print-foobar-objects-verbosely* nil) (defmacro definline (name &rest stuff) "Defines a function and declares it to be inlined" ;; convenient, no? `(progn (declaim (inline ,name)) (defun ,name ,@stuff))) (defstruct (foobar-object (:print-object print-foobar-object)) slots parent) (defun mapobj (func obj &optional (deeply nil)) "Maps FUNC over all of the slots in OBJ. FUNC must take THREE arguments: (1) the object defining the slot, (2) the slot name. That is, only one slot is mapped for a given slot name. nil is returned." (simple-error-check obj ;;; OTHER STUFF INSIDE A METHOD ;;; @ macro ;;; Forms: @var Expands to (slot-val 'var this) ;;; @(meth ... ) Expands to (call 'meth this ... ) ;;; @? macro ;;; Form: @?(meth ... ) Expands to (?call 'meth this ... ) ;;; #@ macro ;;; Form: #@meth Expands to (meth-func 'meth this)

AltStyle によって変換されたページ (->オリジナル) /