[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Breaking hygiene with syntax-rules?
From: |
Walter Lewis |
Subject: |
Re: Breaking hygiene with syntax-rules? |
Date: |
Fri, 11 Aug 2023 09:34:55 -0400 |
Hi Jean,
On 8/11/23 4:00 AM, Jean Abou Samra wrote:
This is a known limitation in Guile. Please read
https://www.gnu.org/software/guile/manual/html_node/Hygiene-and-the-Top_002dLevel.html
I expect that you would be able to fix your macro by using
(define binding-you-want-to-report
(let ((private-binding ...) ...)
expr...))
or
(define-values (binding-to-export-1 binding-to-export-2 ...)
(let ((private-binding ...) ...)
(values expr1 expr2 ...)))
Unfortunately this won't work for my use case, since I am writing a
helper to generate record type definitions. The code is something like
this (slightly simplified for now):
(use-modules (srfi srfi-9) (system foreign))
(define-syntax define-ffi-wrapper
((_ size
name wrap unwrap predicate
to-pointer from-pointer)
(begin
(define-record-type name
(wrap bv pointer)
predicate
(pointer get-pointer set-pointer!))
(define (to-pointer x)
(or (get-pointer x)
(let ((pointer (bytevector->pointer x)))
(set-pointer! x pointer)
pointer)))
(define (from-pointer pointer)
(wrap (pointer->bytevector pointer size)
#f)))))
Basically it is a wrapper similar to define-wrapped-pointer-type, except
when you cast it to a pointer it memoizes the pointer for later. (It's
actually inspired by the vec2 implementation in Dave Thompson's
Chickadee.) I wanted to avoid writing all this boilerplate by hand for
each wrapper type, but I ran into this shadowing issue with the internal
definitions such as get-pointer and set-pointer!.
- Breaking hygiene with syntax-rules?, Walter Lewis, 2023/08/10
- Re: Breaking hygiene with syntax-rules?, Dr. Arne Babenhauserheide, 2023/08/11
- Re: Breaking hygiene with syntax-rules?, Jean Abou Samra, 2023/08/11
- Re: Breaking hygiene with syntax-rules?,
Walter Lewis <=
- Re: Breaking hygiene with syntax-rules?, Walter Lewis, 2023/08/11
- Re: Breaking hygiene with syntax-rules?, Jean Abou Samra, 2023/08/11
- Re: Breaking hygiene with syntax-rules?, Jean Abou Samra, 2023/08/11
- Re: Breaking hygiene with syntax-rules?, Walter Lewis, 2023/08/11
- Re: Breaking hygiene with syntax-rules?, Jean Abou Samra, 2023/08/11
- Re: Breaking hygiene with syntax-rules?, Dr. Arne Babenhauserheide, 2023/08/12
- Re: Breaking hygiene with syntax-rules?, Thompson, David, 2023/08/14