From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Damien Mattei Newsgroups: gmane.lisp.guile.user Subject: Re: 2 macros in one expression Date: Sat, 15 Apr 2023 16:18:21 +0200 Message-ID: References: <4187fdcf-5bee-8e9d-3ec1-19cc55e36fc3@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5713"; mail-complaints-to="usenet@ciao.gmane.io" Cc: guile-user@gnu.org To: Matt Wette Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Sat Apr 15 16:19:21 2023 Return-path: Envelope-to: guile-user@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pngkI-00034B-UI for guile-user@m.gmane-mx.org; Sat, 15 Apr 2023 16:19:19 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pngjd-00050c-D1; Sat, 15 Apr 2023 10:18:37 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pngjc-00050T-Gf for guile-user@gnu.org; Sat, 15 Apr 2023 10:18:36 -0400 Original-Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pngja-0000BQ-FM for guile-user@gnu.org; Sat, 15 Apr 2023 10:18:36 -0400 Original-Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-50489d1af35so5775942a12.3 for ; Sat, 15 Apr 2023 07:18:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1681568313; x=1684160313; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=iB0h2v7PEDnqzCzumqaMJP8s88+D4rU7GAbSqtTWXfM=; b=Xui/225n1Q++oFpJQJ7mBs3+l190t5nhiBfLUvhwjHv9r9ym1pKR+pTQCoV/osdt/1 XyZd6xIbm+5v80cjhHak1XAETTcguiRq3zOHuxQ5lpwJl6dLlRSIHDT/MHgGaai747ts e+/pCeGbRy7XjU9zUDDO3moj5q7cEcfzRQNvKq2lIkzmA2o8scyyqwGLBMEev5ClxXFo OTJfHTTuwmQpN/fhI/MP8YZvhgjjOLHHjqpsKvjPIqSj4pf7ipNSPEnUY/7krouSivu4 tc5qPHqPcjPlezATV0Z8/Wn7mFrT5z1bEUug0D1F73dC/WLpJNcJLpx6bvlEFole9s8q iRoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1681568313; x=1684160313; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=iB0h2v7PEDnqzCzumqaMJP8s88+D4rU7GAbSqtTWXfM=; b=Jp3UGoGNT0/phrJefkE9TZIKpnJbcIpuTKNiK6FQaIDxjtjEe+QO9ngOnpCKmO1rId ys0GO7CaHt3Ybgci0AQKNOpwxbnerml+Jtb7Yq+nXC4UOTmH8WHcwNHYPLSMMgfgVX9a tLRSuD+6qzyCB0B+NEJQ7ieIwHiEjjKClWPJwS/5tYYBLzcNtUEfIWJjKvLEJGeo1Gby eJJ9/hprxB2DyNgsI495pQMmUMr2ugKQoJw9oWENpQWYeYZg4KfW2pXBTiolrWczHMY7 2QM3SK9w1Pp72+5IopR8wJTrogEDSBbh/jFID4Moz969rFlO49g6wq6s4NQ6xp1xCEmM Wwlw== X-Gm-Message-State: AAQBX9c7bBJwmlSi/lm7v65tDP6FbYXeqhdt3aItfJqU5kudiRiMbwC6 CPSHk3TDHkh2AEKbhJhrDXCUfDyFRKvS0ZyCSLQ= X-Google-Smtp-Source: AKy350YiEA6KsXziofyStLRHoL96ak1O8bWRRZ7U8Aqs7wHS1CXcGfdJzlNBn77w21rEgrtUwcnCdRqcWOYEJrUWzpE= X-Received: by 2002:a50:ab02:0:b0:4fc:473d:3308 with SMTP id s2-20020a50ab02000000b004fc473d3308mr4666940edc.8.1681568312777; Sat, 15 Apr 2023 07:18:32 -0700 (PDT) In-Reply-To: <4187fdcf-5bee-8e9d-3ec1-19cc55e36fc3@gmail.com> Received-SPF: pass client-ip=2a00:1450:4864:20::52d; envelope-from=damien.mattei@gmail.com; helo=mail-ed1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Original-Sender: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.user:19104 yes i tried it, i often get this answer :-) with this sort of problem i recurrent have with macros and it never helps ,at the point i never understood what is the use of this option in syntax-rules. My error i think was to forget the expansion stage of macro expansion that is always done for all the macros used in an expression at any level, even if the code is not used in a branch of 'if ,'cond or other conditional the macros will be expansed. I will quote the <- in the opspecial and tried to eval it later, the problem is with eval which is not really normalised between all implementations of scheme concerning its environment of evaluation. I will post the result. The problem was also that in an infix evaluator i wanted to be able to evaluate all procedure (that is ok) and all the macro too which is not always possible with the evaluation technique i use ,it is hard to write an infix evaluator with precedence in the language itself.But the problem arise only with the special forms, so first i quoted them all but then i can not find the difference in the language with '(sin 30) a procedure call and '(1 2 3) a list when evealuating it is has sense for (sin 30) but not for (1 2 3) then i removed all quotation and the macro problem arise... just after i added some overloading functionalities in my Scheme+ when using abstract types the evaluation of abstract object (list) with for example the + operator overloaded became a problem. Damien On Sat, Apr 15, 2023 at 3:50=E2=80=AFPM Matt Wette w= rote: > Did you try using the following? > > (define-syntax $nfx$ > (syntax-rules (<-) > ((... > > > On 4/14/23 4:02 AM, Damien Mattei wrote: > > hello, > > > > i have 2 macros used in one expression like this: > > scheme@(guile-user)> (define i 2) > > scheme@(guile-user)> {i <- i + 1} > > and i got this error: > > While compiling expression: > > Syntax error: > > unknown location: source expression failed to match any pattern in form > <- > > > > i use SRFI-105 so : > > '{i <- i + 1} expand in: > > ($nfx$ i <- i + 1) > > > > and i'm expecting $nfx$ to be called but none of this happens: > > scheme@(guile-user)> ($nfx$ i <- i + 1) > > While compiling expression: > > Syntax error: > > unknown location: source expression failed to match any pattern in form > <- > > > > it seems to be the <- macro and i do not understand why? > > > > any idea? > > > > macros are defined like this for the beginning: > > ;; from file assignment.scm > > (define-syntax <- > > > > (syntax-rules () > > ;; special form like : (<- ($bracket-apply$ T 3) ($bracket-apply$ > T 4)) > > > > ;; one dimension array, example: {a[4] <- 7} > > ;; $bracket-apply$ is from SRFI 105 bracket-apply is an argument = of > > the macro > > ((_ (bracket-apply container index) expr) > > > > .... > > > > ;; from file scheme-infix.scm > > (define-syntax $nfx$ > > (syntax-rules () > > > > ((_ ident opspecial term1 op term2) (cond ((or (equal? (quote > > opspecial) (quote <-)) (equal? (quote opspecial) (quote =E2=86=90))) > > (begin > > (display "$nfx$") (newline) > > (opspecial ident (op term1 term2)))) ;; {ident <- {term1 op term2}} > > > > ... > > > > > > it is in a module like this: > > > > (define-module (Scheme+) > > > > #:use-module (growable-vector) > > #:use-module (srfi srfi-69) ;; Basic hash tables > > #:use-module (srfi srfi-31) ;; rec > > #:export ($nfx$ def $bracket-apply$ <- =E2=86=90 -> =E2=86=92 <+ =E2= =A5=86 +> =E2=A5=85 declare $ & > condx > > <> =E2=89=A0 ** =E2=87=9C =E2=87=9D repeat) > > #:replace (do when unless)) > > > > > > > > (include-from-path "def.scm") > > (include-from-path "array.scm") > > (include-from-path "set-values-plus.scm") > > (include-from-path "apply-square-brackets.scm") > > (include-from-path "assignment.scm") > > (include-from-path "declare.scm") > > (include-from-path "condx.scm") > > (include-from-path "block.scm") > > (include-from-path "not-equal.scm") > > (include-from-path "exponential.scm") > > (include-from-path "while-do-when-unless.scm") > > (include-from-path "repeat-until.scm") > > (include-from-path "scheme-infix.scm") > > > > if it can help. > > > > Regards, > > Damien >