If the default value for an optional field makes sense, then I would do what John suggested in my comment - just define a custom constructor:
(struct s (a b opt))
(define (make-s a b [opt
(s a b opt))
(make-s "a" "b")
(make-s "a" "b" "opt")
, opt N/A, struct s: , :
(struct general (a b))
(struct special general (opt))
(define g (general "a" "b"))
(define s (special "a" "b" "opt"))
, / general, general special :
(general? g) ;
(general? s) ;
, special, :
(special? g) ;
(special? s) ;
, , "is-a" ( " " ), , "special general".
, , racket/class.