In Guile 2.2: (define-class <foo> () (bar #:allocation #:class #:init-value 'baz))
(slot-definition-allocation (class-slot-definition <foo> 'bar)) => #:instance In Guile 2.0 this properly returns #:class. Also, curiously, Guile 2.2 breaks if you present the keywords in the wrong order: (define-class <foo> () (bar #:allocation #:class #:init-value 'baz)) oop/goops.scm:352:0: In procedure class-precedence-list: oop/goops.scm:352:0: In procedure struct_vtable: Wrong type argument in position 1 (expecting struct): #:init-value Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue. scheme@(#{8sync}# systems actors) [1]> ,bt In current input: 1205:0 4 (_) In oop/goops.scm: 2978:4 3 (_ _ . _) 811:17 2 (%prep-layout! #<<class> <foo> 30b1b40>) 767:19 1 (%compute-layout _ 0 #f) 352:0 0 (class-precedence-list _) I'm guessing that's related!