10 lines
393 B
Text
10 lines
393 B
Text
(defmacro define-food-box (name food-type : supers . clauses)
|
|
(unless (subtypep food-type 'edible)
|
|
(error "~s requires edible type, not ~s" %fun% food-type))
|
|
^(defstruct ,name ,supers
|
|
food
|
|
(:method set-food (me food)
|
|
(unless (typep food ',food-type)
|
|
(error "~s: requires ~s object, not ~s" %fun% ',food-type food))
|
|
(set me.food food))
|
|
,*clauses))
|