unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* 2 macros in one expression
@ 2023-04-14 11:02 Damien Mattei
  2023-04-14 14:49 ` Damien Mattei
  2023-04-15 13:49 ` Matt Wette
  0 siblings, 2 replies; 9+ messages in thread
From: Damien Mattei @ 2023-04-14 11:02 UTC (permalink / raw)
  To: guile-user

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 ←)))
      (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$ <- ← -> → <+ ⥆ +> ⥅ declare $ & condx
<> ≠ ** <v v> ⇜ ⇝ 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


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-04-15 16:25 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-14 11:02 2 macros in one expression Damien Mattei
2023-04-14 14:49 ` Damien Mattei
2023-04-14 19:36   ` Damien Mattei
2023-04-15 11:35     ` Damien Mattei
2023-04-15 13:49 ` Matt Wette
2023-04-15 14:18   ` Damien Mattei
2023-04-15 14:45     ` Damien Mattei
2023-04-15 16:15       ` Damien Mattei
2023-04-15 16:25         ` Damien Mattei

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).