 GENERIC#: reader-quot 1 ( class slot-spec -- quot )
 
 M: object reader-quot
-    nip [
-        dup offset>> ,
-        \ slot ,
-        dup class>> object bootstrap-word eq?
-        [ drop ] [ class>> 1array , \ declare , ] if
-    ] [ ] make ;
+    nip [ offset>> [ slot ] curry ] [ class>> ] bi
+    dup object bootstrap-word eq?
+    [ drop ] [ 1array [ declare ] curry compose ] if ;
 
 : reader-word ( name -- word )
     ">>" append "accessors" create-word


: define-changer ( name -- )
    dup changer-word dup deferred? [
        [
            \ over ,
            over reader-word 1quotation
            [ dip call ] curry [ ] like [ dip swap ] curry %
            swap setter-word ,
        ] [ ] make ( object quot -- object ) define-inline
    ] [ 2drop ] if ;

: define-slot-methods ( class slot-spec -- )

    } cond ;

M: object instance-check-quot
    [ predicate-def [ dup ] prepose ] keep
    [ bad-slot-value ] curry [ unless ] curry compose ;

GENERIC#: writer-quot 1 ( class slot-spec -- quot )

