Here is how to get the current line number programmatically in PLT Scheme (via Jay):
#lang scheme
(define-syntax (current-line-number stx)
(quasisyntax/loc stx
'#,(syntax-line stx)))
(printf "~a: ~a~n" (current-line-number) 6)
(printf "~a: ~a~n" (current-line-number) 8)
(via plt)
Hi there. I tried similar stuff in Gauche once, but got stuck when I wanted to wrap (current-line-number) in another macro. E.g. when you define a macro (report x) that expands into (printf “~a: ~a~n” (current-line-number) x), does it print the line number where (report x) appears, or the line number where (current-line-number) appears in the definition of report?
It reports the line number where current-line-number appears (in the macro). Here is what I tried:
(define-syntax-rule (debug-body body)
(begin body (printf “At line: ~a~n” (current-line-number))))
(debug-body (printf “Hello, world.~n”))