<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken">
    <title>gmane.lisp.scheme.chicken</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17752"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17751"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17750"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17749"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17748"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17747"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17746"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17744"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17743"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17742"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17741"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17740"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17739"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17738"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17737"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17736"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17735"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17734"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17733"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17732"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17752">
    <title>Re: Spiffy subprocess cleanup</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17752</link>
    <description>&lt;pre&gt;
Thanks for the excellent debugging work.  I think process-fork really
needs to catch exceptions and exit instead of simply exiting if the
thunk returns normally.  Will post a patch later, unless someone beats
me to it.

Cheers,
Peter
&lt;/pre&gt;</description>
    <dc:creator>Peter Bex</dc:creator>
    <dc:date>2013-05-23T07:14:25</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17751">
    <title>Re: Spiffy subprocess cleanup</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17751</link>
    <description>&lt;pre&gt;After looking at a bit more, here's what I believe is *actually*
happening:

The invalid call to process* is signaling an exception in the child,
which is handled internally by spiffy (spiffy.scm:470), causing that
process to loop back to the start of the accept-next-connection
procedure inside spiffy's accept-loop. At this point you have two
processes listening on 8080, with the parent waiting for the child (who
has no plans to exit). The same thing happens with each request, so the
subprocesses pile up.

Evan
&lt;/pre&gt;</description>
    <dc:creator>Evan Hanson</dc:creator>
    <dc:date>2013-05-23T05:29:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17750">
    <title>Re: Spiffy subprocess cleanup</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17750</link>
    <description>&lt;pre&gt;
Actually, it looks like process* fails immediately when called with a
bad command and an argument list, so what I thought would fix your issue
won't work; ignore it (I forgot to change a call to process* without an
argument list to one with it when I tested it).

Now I'm also curious about what to do here.

Evan
&lt;/pre&gt;</description>
    <dc:creator>Evan Hanson</dc:creator>
    <dc:date>2013-05-23T01:30:13</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17749">
    <title>Re: Spiffy subprocess cleanup</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17749</link>
    <description>&lt;pre&gt;Hi Bryan,

I tried to paste a response but missed you in #chicken. I think you need
to make sure to close the ports returned by process* (in your paste, the
close-input/output-port forms aren't running since process* is signaling
an error):

http://paste.call-cc.org/paste?id=76432a008b2c4310d0044e91d4bcf48c74b730d8#a1

You can register an exception handler for spiffy to make it more clear
what/when things are going wrong:

http://api.call-cc.org/doc/spiffy#def:handle-exception

Cheers,

Evan
&lt;/pre&gt;</description>
    <dc:creator>Evan Hanson</dc:creator>
    <dc:date>2013-05-22T23:49:36</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17748">
    <title>Spiffy subprocess cleanup</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17748</link>
    <description>&lt;pre&gt;I have a web app using spiffy that uses (process*) in one of the views to wait
on a script to do some work.  I was accidentally passing in a non-existent
script name to process*, which was causing a 500 code to be returned by
spiffy. 

The problem is that there is no indication of any error sent to stderr/stdout
by spiffy.  Also, each time I visit the broken view's URL, a new subprocess is
created and never killed.

Here is an example:

  (use posix spiffy)
  
  (define (fail)
    (define-values (i o pid e) (process* "non-existant" '("arg1" "arg2")))
    (close-output-port o)
    (close-input-port i)
    (close-input-port e))
  
  
  (define (server arg)
    (print "starting subprocess...")
    (fail)
    (send-status ok "done"))
  
  (access-log (current-output-port))
  (error-log (current-error-port))
  (debug-log (current-output-port))
  (handle-not-found server)
  (root-path "./")
  (start-server)



If you save the above code in foo.scm, compile and run it, then go to
http://localhost:8080/bla a few tim&lt;/pre&gt;</description>
    <dc:creator>Bryan Vicknair</dc:creator>
    <dc:date>2013-05-22T23:25:58</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17747">
    <title>Re: bb - fix needed</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17747</link>
    <description>&lt;pre&gt;From: dan j &amp;lt;netotaddress&amp;lt; at &amp;gt;mail.ru&amp;gt;
Subject: [Chicken-users] bb - fix needed
Date: Sun, 19 May 2013 17:31:22 +0400


Thanks, Dan. I've tagged a new version with the necessary changes (1.32).


cheers,
felix
&lt;/pre&gt;</description>
    <dc:creator>Felix</dc:creator>
    <dc:date>2013-05-21T07:31:01</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17746">
    <title>bb - fix needed</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17746</link>
    <description>&lt;pre&gt; Egg named "bb" (GUI toolkit) uses "getenv" in setup script, but documentation says: " getenv was removed in Chicken 4.6.4. Use  get-environment-variable instead.". I founded this when i tried to install bb. Log:

B:\home\&amp;gt;chicken-install bb
retrieving ...
connecting to host "chicken.kitten-technologies.co.uk", port 80 ...
requesting "/henrietta.cgi?name=bb&amp;amp;mode=default" ...
reading response ...
HTTP/1.1 200 OK
Date: Sun, 19 May 2013 13:28:03 GMT
Server: Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/0.9.9-dev DAV/2 SVN/1.7.8 PHP/5.4.13 mod_fastcgi
/2.4.6
Connection: close
Transfer-Encoding: chunked
Content-Type: text/plain
reading chunks ......
reading files ...
  ./Table.cxx
  ./Table.h
  ./bb-support.cpp
  ./bb.h
  ./bb.meta
  ./bb.scm
  ./bb.setup
 bb located at C:\Users\Doc\AppData\Local\Temp/tempfb1a.2752/bb
checking platform for `bb' ...
checking dependencies for `bb' ...
install order:
("bb")
installing bb:1.31 ...
changing current directory to C:\Users\Doc\AppData\Local\Temp/tempfb1a.2752/bb
 &lt;/pre&gt;</description>
    <dc:creator>dan j</dc:creator>
    <dc:date>2013-05-19T13:31:22</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17744">
    <title>Solved: Re:  need help with hygienic macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17744</link>
    <description>&lt;pre&gt;Eventually I learned that the technique I've been looking for is 
known singe 2001 by the name "Petrofsky Extraction".

Thanks to everyone who bothered trying to understand my needs.
FYI find the solution below.  I should not be able "hygienize"
the questionable code.

/Jörg

On May 16 2013, Jörg F. Wittenberger wrote:



;; # Petrofsky Extraction
;;
;; Extract several colored identifiers from a form
;;    extract* SYMB-L BODY CONT
;; where SYMB-L is the list of symbols to extract, and BODY and CONT
;; has the same meaning as in extract, see above.
;; 
;; The extract* macro expands into
;;   (K-HEAD (extr-id-l . K-IDL) . K-ARGS)
;; where extr-id-l is the list of extracted colored identifiers. The
;; extraction itself is performed by the macro extract.

(define-syntax extract*
  (syntax-rules ()
    ;; How to write dirty R5RS macros
    ;; 
http://groups.google.com/groups?selm=87oflzcdwt.fsf%40radish.petrofsky.org
    ;; How to write seemingly unhygienic macros using syntax-rules
    ;; Date: 2001-11-19 01:&lt;/pre&gt;</description>
    <dc:creator>Jörg F. Wittenberger</dc:creator>
    <dc:date>2013-05-18T10:21:08</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17743">
    <title>Re: need help with hygienic macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17743</link>
    <description>&lt;pre&gt;Hi all,

the past days I wasted trying to wrap my head around a hygienic
replacement (using syntax-rules) for a macro, which is all too easily
done in an unhygienic way (with all the downsides of accidental
variable captures).

I need some syntax to define a set of procedures, which all have the
same list of formal arguments.  However those arguments are about to
change and therefore MUST NOT appear at the definition side.  Access
to those formals shall be available within the procedure body by means
of some special syntax.

Like this: (`deftig` would be the syntax to define the procedure.)
I want to write:

(deftig f1 (+ (get-x) (get-y)))

and get:

(f1 1 2) =&amp;gt; 3

In `define-macro` this would be:

(define-macro (deftig name . body) `(define (,name x y) . ,body))
(define-macro (get-x) x)
(define-macro (get-y) y)

   However:
    (deftig f2 (let ((x 7)) (+ (get-x) (get-y))))
    (f2 1 2) =&amp;gt; 9  -- not what I want

I've got some *partial* success with this:

;; breed is a helper to access thos hidden formals:

&lt;/pre&gt;</description>
    <dc:creator>Jörg F. Wittenberger</dc:creator>
    <dc:date>2013-05-16T19:19:01</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17742">
    <title>Re: reader macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17742</link>
    <description>&lt;pre&gt;To add to that: be aware that you have to load reader extensions in a 
special way if you want to use them when compiling your code. To do it, 
use the "-X" flag when running the chicken command, for example: 
"chicken -X my-reader-extension-module my-source-file.scm" That loads 
the reader extension _before_ it starts compiling your code, which 
allows the reader extension to be available at compile time.

_______________________________________________
Chicken-users mailing list
Chicken-users&amp;lt; at &amp;gt;nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users
&lt;/pre&gt;</description>
    <dc:creator>John Croisant</dc:creator>
    <dc:date>2013-05-13T21:04:38</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17741">
    <title>Re: reader macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17741</link>
    <description>&lt;pre&gt;Răzvan Rotaru scripsit:


See &amp;lt;http://wiki.call-cc.org/man/4/Unit%20library#reader-extensions&amp;gt;.

&lt;/pre&gt;</description>
    <dc:creator>John Cowan</dc:creator>
    <dc:date>2013-05-13T20:55:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17740">
    <title>Re: reader macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17740</link>
    <description>&lt;pre&gt;I believe this is what are you looking for.

http://wiki.call-cc.org/man/4/Macros

Cheers,



On Mon, May 13, 2013 at 4:09 PM, Răzvan Rotaru &amp;lt;razvan.rotaru&amp;lt; at &amp;gt;gmail.com&amp;gt;wrote:



&lt;/pre&gt;</description>
    <dc:creator>Pedro Melendez</dc:creator>
    <dc:date>2013-05-13T20:13:39</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17739">
    <title>reader macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17739</link>
    <description>&lt;pre&gt;Hi,

I have not found information about this topic, so I have to ask here: does
chicken provide reader macros?

Răzvan
_______________________________________________
Chicken-users mailing list
Chicken-users&amp;lt; at &amp;gt;nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users
&lt;/pre&gt;</description>
    <dc:creator>Răzvan Rotaru</dc:creator>
    <dc:date>2013-05-13T20:09:23</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17738">
    <title>Re: need help with hygienic macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17738</link>
    <description>&lt;pre&gt;
...

Pretty much.  Partially even simpler: all my color-procedures
share the same signature.  So it's more like

(define (red a b c d) (list a b c d))
(define (blue a b c d) (vector a b c d))

but I want to write (almost) something like:

(define-with-more red (list a b c d))
(define-with-more blue (vector a b c d))

By "(almost)" I mean that I don't want to be forced to
mention all of {a,b,c,d} in the calls to {list,vector}.
(Best: not any.)

Instead I want some macro magic to 1.) access (or construct)
{a,b,c,d} - or for that matter also {e,f,...} which are
derived from {a,b,c,d} - and 2.) create the call
here simulated by {list,vector,...}.

Thus more like writing

(define-with-more red
 (create-call list (set-a (+ (get-a) 1)) ))

to be expanded into

(define (red a b c d) (list (+ a 1) b c d))

with 1st bonus point for `set-a` and `get-a` being spelled the
same `a` and 2nd bonus point for `(get-a)` without parenthesis.
Such that I would write either

(define-with-more red
 (create-call list (a (+ a 1)) )&lt;/pre&gt;</description>
    <dc:creator>Jörg F. Wittenberger</dc:creator>
    <dc:date>2013-05-12T21:57:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17737">
    <title>Re: Thanks Chicken Scheme</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17737</link>
    <description>&lt;pre&gt;Hi Peter,
This project was my first experience using Linux, andas you guessed, I wanted to use it as a learning experience.
Writing foreign interfaces by hand allowed be to write C code,which challenged my memory management techniques and gaveme an opportunity to invoke make and gcc. By the way, the Chicken Scheme FFI is really easy to use.
Also, coding against FastCGI finally dispelled all theabstractions found at my .NET day job, and it felt goodworking with streams and raw HTTP messages.
Your documentation is clear and I hand no troubles findingthe eggs list you mentioned, of which the length is amazing.Guess I was just in a masochistic mood :)
Cheers,Mathieu
       _______________________________________________
Chicken-users mailing list
Chicken-users&amp;lt; at &amp;gt;nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users
&lt;/pre&gt;</description>
    <dc:creator>Mathieu Desrochers</dc:creator>
    <dc:date>2013-05-12T18:28:27</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17736">
    <title>Re: need help with hygienic macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17736</link>
    <description>&lt;pre&gt;
Yes, I was.


I didn't quite understand that example.  I guess I'm not thinking too
clearly today!

In any case, you can also cobble your own parameterize-like construction
by communicating through globals, for example.  Or you can just use
fluid-let.

Or, if it's possible at all, try to focus your efforts on making
parameterize behave as expected, and to make it work faster.

Cheers,
Peter
&lt;/pre&gt;</description>
    <dc:creator>Peter Bex</dc:creator>
    <dc:date>2013-05-12T18:03:55</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17735">
    <title>Re: need help with hygienic macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17735</link>
    <description>&lt;pre&gt;

That's what's to be replaced.


Hm, wait... you're not talking about parameterize as in srfi-39 do you?

a) Way too much overhead.
b) no way: atop of the usually straight-forward evaluation it's sometimes
   subject to delay'ed evaluation... (see my other message to 
chicken-hackers
   about how to make a single `(delay &amp;lt;expr&amp;gt;)` being evaluated as often
   as you want just to discard all but the fastest result (nevertheless
   still incurring all the effort to evaluate those results, which never
   take an effect besides the side-effects; and yes... we are talking
   about the same code here.  The xslt-impl. I want to clean up
   does xslt:for-each in one thread per selected element and goes
   though some length to avoid the use of a simple `delay` for
   xsl:variable's since this doesn't work as expected.).

Na; I rather continue to live the the unhygienic macro.
BUT: I hate it!
Just: I can't help myself… :-/



_______________________________________________
Chicken-users mailing list
Chicken-users&amp;lt; at &amp;gt;no&lt;/pre&gt;</description>
    <dc:creator>Jörg F. Wittenberger</dc:creator>
    <dc:date>2013-05-12T17:36:32</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17734">
    <title>Re: need help with hygienic macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17734</link>
    <description>&lt;pre&gt;
This is indeed fundamentally unhygienic.


That does sound a lot like parameters.  Why not simply parameterize
the parameters based on arguments to your macros?

Cheers,
Peter
&lt;/pre&gt;</description>
    <dc:creator>Peter Bex</dc:creator>
    <dc:date>2013-05-12T17:10:11</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17733">
    <title>Re: need help with hygienic macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17733</link>
    <description>&lt;pre&gt;

The idea is to have a definer, `deftig` here, which only abstracts the
argument list of the defined procedure away.  Here a literal of the
original macro (as used in a limited/extended XSLT implementation to be
changed).

(define-macro (define-transformer symbol . body)
  `(define (,symbol
            place
            message
    root-node
            variables
    namespaces
            ancestor
            self-node
            nl
            mode-choice
            proc-chain
            ) . ,body))

The code references those parameters by their name, with all
the downsides of unhygienic macros.

So `deftig` is `define-transformer`.

There is another lengthy macro `xml-walk-down`, which processes it's
argument list a sequence (&amp;lt;keyword&amp;gt; &amp;lt;value&amp;gt; ...), which collects &amp;lt;value&amp;gt;s
of those arguments mentioned as &amp;lt;keyword&amp;gt; and passes them in the correct
position to `proc-chain` to continue the traversal of the xml tree.

To get rid of the predefined-to-be-kept-in-head list of arguments,
I want better macros.&lt;/pre&gt;</description>
    <dc:creator>Jörg F. Wittenberger</dc:creator>
    <dc:date>2013-05-12T16:57:12</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17732">
    <title>Re: need help with hygienic macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17732</link>
    <description>&lt;pre&gt;
I  am  not  a  Chicken   user,  neither  I  have  a  general
solution. ;-)


If I  understand correctly the  problem and the way  you are
trying  to  solve  it:   your  solution  pattern  is  highly
unhygienic and problematic because nesting macro definitions
into  macro  definitions   somehow  "flattens"  the  lexical
context of  the function's body, loosing  informations about
the original context.

  This is what  I understand: you would like  to execute the
code:

   (define (red a b r s)
     (list a b r s))

   (define (blue c d r s)
     (list c d r s))

   (list (red 1 2 3 4)
         (blue 5 6 7 8))

but you only want to write:

   (define-with-more (red a b)
     (list a b r s))

   (define-with-more (blue c d)
     (list c d r s))

   (list (red 1 2 3 4)
         (blue 5 6 7 8))

this would be gokuraku for your code.

  It  is  easy  to   envision  a  DEFINE  replacement  which
introduces arguments in the formals list:

   (define-syntax define-with-more
     (syntax-rules ()
       ((_ (?name ?f&lt;/pre&gt;</description>
    <dc:creator>Marco Maggi</dc:creator>
    <dc:date>2013-05-12T16:17:16</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.lisp.scheme.chicken/17731">
    <title>Re: need help with hygienic macros</title>
    <link>http://permalink.gmane.org/gmane.lisp.scheme.chicken/17731</link>
    <description>&lt;pre&gt;
I have no idea what this macro is attempting to do, but when you
simplify it to the following, you'll see that its expansion doesn't
know about foo:

(define-syntax deftig
  (syntax-rules ()
    ((_ name body ...)
     (let-syntax
         ((pinapple
           (syntax-rules &amp;lt;...&amp;gt; ()
                         ((_ ((p v) &amp;lt;...&amp;gt;) bdy &amp;lt;...&amp;gt;)
                          (let-syntax ((helper (syntax-rules ()
                                                 ((_ p &amp;lt;...&amp;gt;) '(begin bdy &amp;lt;...&amp;gt;)))))
                            (helper v &amp;lt;...&amp;gt;))))))
       (pinapple ((foo (x y)) (foog (x y)) (gosh y)) body ...)))))

(deftig bar (foo) (foog 2) (foog 2.5) (let ((n gosh)) (foog n)) 'phar)
=&amp;gt; (begin (foo) (foog 2) (foog 2.5) (let ((n gosh)) (foog n)) (quote phar))

foo really is undefined here.  There's no binding construct that
introduces foo, as far as I can tell.  That's because "p" is not used
anywhere in the expansion.

In the example, helper is defined as:

(syntax-rules ()
  ((_ foo bar) (begin body ...)))

and it is invo&lt;/pre&gt;</description>
    <dc:creator>Peter Bex</dc:creator>
    <dc:date>2013-05-12T15:24:29</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.lisp.scheme.chicken">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.lisp.scheme.chicken</link>
  </textinput>
</rdf:RDF>
