RosettaCodeData/Task/Constrained-genericity/TXR/constrained-genericity-1.txr
2023-07-01 13:44:08 -04:00

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))