Evaluating a pprint-logical-block form without the optional 'out' keyword argument throws an exception. (See details below.) It works fine when that is provided. Based on a quick look at kawa/lib/kawa/pprint.scm, I suspect the problem is just a missing (define out-expr #!null) in the define-syntax-case. The attached trivial patch seems to do the trick, but I have not tested carefully. (I can also submit using gitlab if you prefer.) Details: chaw@vereq:~$ kawa #|kawa:1|# (import (kawa pprint)) #|kawa:2|# (pprint-logical-block (display 'ok)) /dev/stdin:2:1: evaluating syntax transformer 'pprint-logical-block' threw kawa/pprint.scm:69:30: unbound location: out-expr gnu.mapping.DynamicLocation.get(DynamicLocation.java:36) kawa.lib.kawa.pprint.lambda1(pprint.scm:69) kawa.lib.kawa.pprint.lambda1$check(pprint.scm:10000) gnu.mapping.CallContext.runUntilValue(CallContext.java:667) gnu.mapping.Procedure.apply1(Procedure.java:148) kawa.lang.Macro.expand(Macro.java:205) kawa.lang.Macro.scanForm(Macro.java:235) kawa.lang.Translator.scanForm(Translator.java:1621) gnu.kawa.lispexpr.LispLanguage.parse(LispLanguage.java:117) gnu.expr.Language.parse(Language.java:764) gnu.expr.Language.parse(Language.java:758) kawa.Shell.run(Shell.java:266) kawa.Shell.run(Shell.java:196) kawa.Shell.run(Shell.java:183) kawa.repl.processArgs(repl.java:714) kawa.repl.main(repl.java:820) #|kawa:3|# (pprint-logical-block out: (current-output-port) (display 'ok)) ok #|kawa:4|# chaw@vereq:~$ kawa --version Kawa 2.93 (git describe: 2.93-23-g4fa24f2-dirty) Copyright (C) 2017 Per Bothner chaw@vereq:~$ java -version openjdk version "1.8.0_131" OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-1~bpo8+1-b11) OpenJDK Server VM (build 25.131-b11, mixed mode) chaw@vereq:~$ uname -a Linux vereq.eip10.org 3.16.0-4-686-pae #1 SMP Debian 3.16.43-2 (2017-04-30) i686 GNU/Linux chaw@vereq:~$ Regards, -chaw