The version of macro
(define-syntax (hyphen-define/ok1 stx)
(syntax-case stx ()
[(_ a b (args ...) body0 body ...)
(syntax-case (datum->syntax #'a
(string->symbol (format "~a-~a"
(syntax->datum #'a)
(syntax->datum #'b))))
()
[name #'(define (name args ...)
body0 body ...)])]))
(hyphen-define/ok1 foo bar () #t)
(foo-bar)
**The version of high order function **
(define (hyphen_define_ok2 a b . args)
(define name (string-append a "-" b))
(define (inner_func . args)
#t)
inner_func)
(define foo_bar (hyphen_define_ok2 "foo" "bar"))
(display (foo_bar))
why should I choose the macro rather that high order function