I have a module named (mapping), which contains a thing that I have called "mapping", which is a nice functional interface to mutable hash tables (based on SRFI-17): https://github.com/panicz/grasp-android/blob/master/stages/retreat/GRASP/src/mapping.scm Therein, you can also find the following definition of define-mapping: (define-syntax-rule (define-mapping (mapping-name key) default-value) (define-early-constant mapping-name (mapping (key) default-value))) where define-syntax-rule is defined in a straightforward way in another module. When I try to use this code from yet another module -- more specifically, this one: https://github.com/panicz/grasp-android/blob/master/stages/retreat/GRASP/src/panel.scm#L130 as (define-mapping (on-key-press code) never) I get the error message define-constant is only allowed in a but when I use the expanded version (define on-key-press (mapping (code) never)) everything works. I wonder what could be the reason of Kawa's behavior.