Gauche Users’ Reference: Top

上のサイトを見る限り、printfデバッグ的なことをするためには#?= #?,の2つの構文が使えるようです。

とりあえず#?=の使用例。

gosh> (define (foo x) (+ x 1))
foo
gosh> #?=(foo 3)
#?="(standard input)":21:(foo 3)
#?-    4
4
gosh> (foo #?=(foo 3))
#?="(standard input)":22:(foo 3)
#?-    4
5
gosh> (define (fact n) (if (= n 0) 1 (* n #?=(fact (- n 1)))))
fact
gosh> (fact 3)
#?="(standard input)":27:(fact (- n 1))
#?="(standard input)":27:(fact (- n 1))
#?="(standard input)":27:(fact (- n 1))
#?-    1
#?-    1
#?-    2
6 

次に#?,を使ってみようとしましたが……

(define (fact n) (if (= n 0) 1 (* n #?,(fact (- n 1)))))
*** READ-ERROR: Read error at "(standard input)":line 32: unsupported #?-syntax: #?,

ちなみに、#?,はdebug-funcallのシンタックスシュガーであると書かれていますが、そのdebug-funcall自体もありません。
バージョン違いのせいでしょうか?

$ gosh -V
Gauche scheme shell, version 0.9.4 [utf-8,pthreads], x86_64-unknown-linux-gnu

ちなみに上のサイトのトップを見てみたところ、

Gauche ユーザリファレンス

本書は、R7RS準拠のScheme処理系、Gaucheのリファレンスマニュアルです。 Gaucheのバージョン0.9.4に対応します。

……………。
結局原因はわからないまま。

2016/10/29 追記: #?, はGauche 0.9.5以降の機能のようです。