Subject: Problems using optargs with function docstrings

From: Peter TB Brett <[email-masked]>
Date: Thu, 08 Dec 2011 11:01:30 +0000

There seems to be a nasty interference between the (ice-9 optargs)
module, Guile's support for function docstrings, and a function's
top-level definition context.

For example, the following works:

(use-modules (ice-9 optargs))
(define* (foo #:optional (bar "baz"))
(define (frob p) (display p) (newline))
(frob bar))
(foo)

with output:

baz

But when you add a docstring, it doesn't.

(use-modules (ice-9 optargs))
(define* (foo #:optional (bar "baz"))
"Docs go here"
(define (frob p) (display p) (newline))
(frob bar))
(foo)

This generates an error:

ERROR: In procedure memoization:
ERROR: Bad define placement (define (frob p) (display p) (newline)).

I'm not sure if this is a bug, but it looks like one to me. ;-)

Peter

-- 
Peter Brett <[email-masked]>
Remote Sensing Research Group
Surrey Space Centre