- (let ((name (car mob-head)) (attr (cdr mob-head)))
- `(define ,(string->symbol (string-concatenate (list "make-" (symbol->string name))))
- (lambda* ,(if (null? attr) '() `(#:key ,@attr))
- (the-mob ',name () ,attr ,@body)))))
+ (let* ((name (car mob-head)) (attr (cdr mob-head))
+ (fun-name (get-mob-function-name name)))
+ `(begin
+ (define-mob-function ,(cons fun-name attr) ,@body)
+ (define ,(string->symbol (string-concatenate (list "make-" (symbol->string name))))
+ (lambda* ,(if (null? attr) '() `(#:key ,@attr))
+ (the-mob ',name () ,attr ,fun-name))))))