hello Zelphir, i understood my error, all was ok is just that it convert this way: '{x <+ 2 3} ($nfx$ x <+ 2 3)
in general the prefix notation of {1 <+ 2 3 4 ...} is not (<+ 1 2 3 4 ...) because (<+ 1 2 3 4 ...) in infix is {1 <+ 2 <+ 3 <+ 4 <+ ...} it a stupid error of mine i will drop the error case in macro and let Scheme deal with the error itself ,he do it fine... we message like that: Syntax error: unknown location: source expression failed to match any pattern in form <+ i find the error because thinking to ellipsis make me thiink to multiple expressions in my <+ operator,anyway you help me, thank you <+ is just in this case a define: scheme@(guile-user)> {x <+ 7} scheme@(guile-user)> x 7 he must be an unary operator , it does not allow multiple arity, but that could be an idea like in C or as far as i remember one can writ x=y=7, anyway in scheme it would be harder because SRFI 105 does not deal with precedence... well i will do that in the future and such writing as x=y=7 is not often used.... thank you damien On Sun, Sep 19, 2021 at 2:34 PM Zelphir Kaltstahl < zelphirkaltst...@posteo.de> wrote: > Hi Damien! > > I think there might be too few expressions matched in the first case: (_ > var expr). Wouldn't it have to be: > > ~~~~ > (_ var expr1 expr2) > ;; or > (_ var exprs ...) > ~~~~ > > for > > ~~~~ > (<+ var expr1 expr2) > ~~~~ > > to work, simply because of the number of expressions there? > > But then you might need to use ellipsis in the resulting syntax somewhere, > otherwise you get: > > ~~~~ > syntax: missing ellipsis in form (syntax (define var expr)) > ~~~~ > > I don't know where that would go, but I also do not understand yet the > goal. I think it is best to always describe, what you want to achieve, when > you write a macro. > > Regards, > Zelphir > On 9/4/21 4:41 PM, Damien Mattei wrote: > > hi, > > i have this macro: > > (define-syntax <+ > (syntax-rules () > ((_ var expr) (define var expr)) > ((_ err ...) (syntax-error "Bad <- form")) ;; does not work in infix ! > )) > > why my syntax-error pattern never reach in infix: > > scheme@(guile-user)> {x <+ 7 8} > While compiling expression: > Syntax error: > unknown file:3:3: source expression failed to match any pattern in form <+ > > but ok in prefix: > > scheme@(guile-user)> (<+ x 9 10) > While compiling expression: > Syntax error: > unknown location: <+: Bad <- form in form (<+ x 9 10) > > why? > Regards, > Damien > > -- > repositories: https://notabug.org/ZelphirKaltstahl > >