For completeness, this works as well:
lib.scm:
(define-module (lib)
#:use-module ((main) #:select (thing))
#:export (test))
(define-syntax test
(lambda (sintax)
(syntax-case sintax ()
((test id)
(free-identifier=? #'id #'thing)
main.scm:
(define-module (main)
Le 08/01/2023 à 16:18, yarl baudig a écrit :
Obviously...
Ok, I tried more.
Apparently,
(define-syntax define-enumerate-type
(syntax-rules ()
((_ name->int (name id) ...)
(define-syntax name->int
(syntax-rules (name ...)
((_ name) id) ...)
works the same as
>
> Not going to work.
> , it matches anything.
>
>
Obviously...
Ok, I tried more.
Apparently,
(define-syntax define-enumerate-type
(syntax-rules ()
((_ name->int (name id) ...)
(define-syntax name->int
(syntax-rules (name ...)
((_ name) id) ...)
works the
Le 08/01/2023 à 10:46, yarl baudig a écrit :
What if I replace
(define-syntax define-enumerate-type
(syntax-rules ()
((_ name->int (name id) ...)
(define-syntax name->int
(syntax-rules (name ...)
((_ name) id) ...)
with
(define-syntax define-enumerate-type
What if I replace
(define-syntax define-enumerate-type
(syntax-rules ()
((_ name->int (name id) ...)
(define-syntax name->int
(syntax-rules (name ...)
((_ name) id) ...)
with
(define-syntax define-enumerate-type
(syntax-rules ()
((_ name->int (name id) ...)
Le 06/01/2023 à 14:55, Maxime Devos a écrit :
Guile's implementation of macros is a little lax with typing,
in the sense that objects like #false and #true (but not symbols,
because hygiene) can be returned too, but IIUC this is undocumented
and not standard Scheme (*).
Well, that is what
On 06-01-2023 14:31, yarl baudig wrote:
That is also my understanding, confirmed by
$ cat lib.scm
(define-module (lib)
#:export (test))
(define-syntax test
(lambda (sintax)
(syntax-case sintax ()
((test id)
(datum->syntax sintax (free-identifier=? #'id #'th
>
> That is also my understanding, confirmed by
>
> $ cat lib.scm
> (define-module (lib)
> #:export (test))
>
> (define-syntax test
> (lambda (sintax)
> (syntax-case sintax ()
> ((test id)
> (datum->syntax sintax (free-ide
oks for a
free identifier.
That is also my understanding, confirmed by
$ cat lib.scm
(define-module (lib)
#:export (test))
(define-syntax test
(lambda (sintax)
(syntax-case sintax ()
((test id)
(datum->syntax sintax (free-identifier=? #'id #'thing))
$ cat test.scm
On 04-01-2023 16:11, yarl baudig wrote:
Hello guile.
I don't know if that's a bug. Anyway, I am confused about this so I ask. I came across
this problem playing with guix source code. I will share different "tests" each
test is a directory with nothing but the files I share.
each time the
nside it's directory) is `guile
--no-auto-compile -L . main.scm`
base/
main.scm:
-----
(define-module (main)
#:export (valid-path?))
(define-syntax define-enumerate-type
(syntax-rules ()
((_ name->int (name id) ...)
(define-syntax name->int
(syntax-rules (name ...)
11 matches
Mail list logo