1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
<!-- Generator: GNU source-highlight
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><i><font color="#9A1900">;;;; Test file for Lisp</font></i>
<i><font color="#9A1900">;;;; A simple test file</font></i>
<font color="#FF0000">(</font><b><font color="#0000FF">defpackage</font></b> <b><font color="#000080">:foobar</font></b> <font color="#FF0000">(</font><b><font color="#000080">:use</font></b> <b><font color="#000080">:common-lisp-user</font></b> <b><font color="#000080">:common-lisp</font></b><font color="#FF0000">))</font>
<font color="#FF0000">(</font><b><font color="#0000FF">in-package</font></b> <b><font color="#000080">:foobar</font></b><font color="#FF0000">)</font>
<font color="#FF0000">(</font>export '<font color="#FF0000">(</font>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 <font color="#009900">*foo-version*</font>
<font color="#009900">*print-foo-objects-verbosely*</font><font color="#FF0000">))</font>
<font color="#FF0000">(</font><b><font color="#0000FF">defconstant</font></b> <font color="#009900">*foobar-version*</font> <font color="#993399">3</font> <font color="#FF0000">"Foobar's Version Number"</font><font color="#FF0000">)</font>
<font color="#FF0000">(</font><b><font color="#0000FF">defparameter</font></b> <font color="#009900">*print-foobar-objects-verbosely*</font> nil<font color="#FF0000">)</font>
<font color="#FF0000">(</font><b><font color="#0000FF">defmacro</font></b> definline <font color="#FF0000">(</font>name &rest stuff<font color="#FF0000">)</font>
<font color="#FF0000">"Defines a function and declares it to be inlined"</font> <i><font color="#9A1900">;; convenient, no?</font></i>
`<font color="#FF0000">(</font><b><font color="#0000FF">progn</font></b> <font color="#FF0000">(</font>declaim <font color="#FF0000">(</font>inline ,name<font color="#FF0000">))</font>
<font color="#FF0000">(</font><b><font color="#0000FF">defun</font></b> ,name ,@stuff<font color="#FF0000">)))</font>
<font color="#FF0000">(</font><b><font color="#0000FF">defstruct</font></b> <font color="#FF0000">(</font>foobar-object <font color="#FF0000">(</font><b><font color="#000080">:print-object</font></b> print-foobar-object<font color="#FF0000">))</font> slots parent<font color="#FF0000">)</font>
<font color="#FF0000">(</font><b><font color="#0000FF">defun</font></b> mapobj <font color="#FF0000">(</font>func obj &optional <font color="#FF0000">(</font>deeply nil<font color="#FF0000">))</font>
<font color="#FF0000">"Maps FUNC over all of the slots in OBJ. FUNC must take THREE</font>
<font color="#FF0000">arguments: (1) the object defining the slot, (2) the slot name.</font>
<font color="#FF0000">That is, only one slot</font>
<font color="#FF0000">is mapped for a given slot name. nil is returned."</font>
<font color="#FF0000">(</font>simple-error-check obj
<i><font color="#9A1900">;;; OTHER STUFF INSIDE A METHOD</font></i>
<i><font color="#9A1900">;;; @ macro</font></i>
<i><font color="#9A1900">;;; Forms: @var Expands to (slot-val 'var this)</font></i>
<i><font color="#9A1900">;;; @(meth ... ) Expands to (call 'meth this ... )</font></i>
<i><font color="#9A1900">;;; @? macro</font></i>
<i><font color="#9A1900">;;; Form: @?(meth ... ) Expands to (?call 'meth this ... )</font></i>
<i><font color="#9A1900">;;; #@ macro</font></i>
<i><font color="#9A1900">;;; Form: #@meth Expands to (meth-func 'meth this)</font></i>
</tt></pre>
|