Python syntax in Lisp and Scheme
Pascal Bourguignon
spam at thalassa.informatimago.com
Mon Oct 6 07:05:10 EDT 2003
More information about the Python-list mailing list
Mon Oct 6 07:05:10 EDT 2003
- Previous message (by thread): Python syntax in Lisp and Scheme
- Next message (by thread): Python syntax in Lisp and Scheme
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
gregm at cs.uwa.edu.au writes: > What does it mean to take a variable-name as an argument? How is that > different to taking a pointer? What does it mean to take "code" as an > argument? Is that different to taking a function as an argument? The difference is that you can declare (compilation-time) it and associated variables or functions. For example, I recently defined this macro, to declare at the same time a class and a structure, and to define a couple of methods to copy the objects to and from structures. That's so useful that even cpp provide us with a ## operator to build new symbols. (DEFMACRO DEFCLASS-AND-STRUCT (NAME SUPER-CLASSES ATTRIBUTES OPTIONS) (LET ((STRUCT-NAME (INTERN (FORMAT NIL "~A-STRUCT" NAME)))) `(PROG1 (DEFCLASS ,NAME ,SUPER-CLASSES ,ATTRIBUTES ,OPTIONS) (DEFSTRUCT ,STRUCT-NAME ,@(MAPCAR (LAMBDA (ATTRIBUTE) (CONS (CAR ATTRIBUTE) (CONS (GETF (CDR ATTRIBUTE) :INITFORM NIL) (IF (GETF (CDR ATTRIBUTE) :TYPE NIL) NIL (LIST :TYPE (GETF (CDR ATTRIBUTE) :TYPE)))))) ATTRIBUTES)) (DEFMETHOD COPY-TO-STRUCT ((SELF ,NAME)) (MAKE-STRUCT ',NAME ,@(MAPCAN (LAMBDA (ATTRIBUTE) `(,(INTERN (STRING (CAR ATTRIBUTE)) "KEYWORD") (COPY-TO-STRUCT (SLOT-VALUE SELF ',(CAR ATTRIBUTE))))) ATTRIBUTES))) (DEFMETHOD COPY-FROM-STRUCT ((SELF ,NAME) (STRUCT ,STRUCT-NAME)) ,@(MAPCAR (LAMBDA (ATTRIBUTE) `(SETF (SLOT-VALUE SELF ',(CAR ATTRIBUTE)) (,(INTERN (FORMAT NIL "~A-~A" STRUCT-NAME (CAR ATTRIBUTE))) STRUCT))) ATTRIBUTES) SELF) )) );;DEFCLASS-AND-STRUCT -- __Pascal_Bourguignon__ http://www.informatimago.com/ Do not adjust your mind, there is a fault in reality.
- Previous message (by thread): Python syntax in Lisp and Scheme
- Next message (by thread): Python syntax in Lisp and Scheme
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list