Hi Andy, Ludo,

LilyPond code uses (begin) as a special list terminator for some data
structures, and tests this using a custom predicate void:
(define-public (void? x) (eq? x (begin)))
This works in V1.8, and apparently used to work in 2.0.2 (no errors),
but in 2.0.3
(begin) is OK at the repl, (with readline enabled and activated), but
in any sort of procedure using it causes a diagnostic, reporting
either at the repl or in .scm files,

xxx: source expression failed to match any pattern in form (begin).

The documentation says:

6.13.1 Evaluating a series of expressions
<snip>
— syntax: begin expr1 expr2 ...

    The expression(s) are evaluated in left-to-right order and the
value of the last expression is returned as the value of the
begin-expression. This expression type is used when the expressions
before the last one are evaluated for their side effects.

    Guile also allows the expression (begin), a begin with no
sub-expressions. Such an expression returns the `unspecified' value.

How do we mend our code, or has Guile V2.0.3 broken?

Cheers,

Ian Hulin


Reply via email to