David Kastrup <d...@gnu.org> writes:

> Now here is one thing worth considering: currently the predicate scheme?
> is defined as
> (define-public (scheme? x) #t)
>
> I lean towards defining it instead as
> (define-public (scheme? x) (not (eq? x (begin))))
> so that it will accept anything _except_ void expressions.
>
> Does that appear like a good idea?

Ugh, it means that define-void-function can't be a special case of
define-scheme-function: define-void-function will always return a void
expression, and define-scheme-function is defined to return a value of
type scheme?, so Lilypond would protest if you tried to return a void
expression and probably return #f after flagging an error.

define-scheme-function is pretty young, so perhaps disallowing it from
returning void expressions makes some sense without all too much
compatibility pain as long as define-void-function is available for
functions not returning anything.

Is it ok if I do this as one commit series?

-- 
David Kastrup


_______________________________________________
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to