[racket] (procedure? (hash)) -> true
Thanks Matthias for the #%app idea. This appears to work exactly as I had wanted such that a hash in function position works with one arg. In the rare case where my application does not want the default #f, I'll just use (hash-ref) in the normal fashions.
(module my-racket racket
(provide (rename-out [my-app #%app]))
(define-syntax my-app
(syntax-rules ()
[(_ f) (f)]
[(_ f k)
(let ((F f))
(if (hash? F)
(#%app hash-ref F k #f)
(#%app F k)))]
[(_ f e ...)
(#%app f e ...)])))