[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: define-syntax and vector constants
From: |
Martin Grabmueller |
Subject: |
Re: define-syntax and vector constants |
Date: |
Tue, 19 Feb 2002 13:35:45 +0100 (MET) |
> From: Bill Schottstaedt <address@hidden>
> Date: Tue, 19 Feb 2002 04:26:13 -0800
>
> I think define-syntax is stumbling on vector constants:
>
> (use-modules (ice-9 syncase))
>
> (define-syntax IF
> (syntax-rules ()
> ((IF <form1> <form2>) (if <form1> <form2>))
> ((IF <form1> <form2> <form3>) (if <form1> <form2> <form3>))))
>
> (IF (not (vector? #(4.0)))
> (display "oops"))
>
>
> invalid syntax #(4.0)
> In /usr/lib/snd/share/guile/1.7.0/ice-9/syncase.scm:
> 122: 0* [scm-error misc-error #f "~A ~S" ("invalid syntax" #(4.0)) ()]
>
> (happens in Guile 1.4 also).
This is not a bug in define-syntax, but on your code. R5RS requires
vector constants to be quoted. Whether this makes sense or not is
another question. (Note that Guile itself *does* accept unquoted
vector constants, it's syncase which doesn't.)
Try
(IF (not (vector? '#(4.0)))
(display "oops"))
For me this works.
HTH,
'martin