Re: Trouble trying to understand how low level macros interact with module system.
"Igor Hjelmstrom Vinhas Ribeiro" <[email protected]> Sun, 30 Nov 2008 09:44:28 -0300
| Newsgroups | gmane.comp.java.sisc.user |
|---|---|
| Message-ID | <[email protected]> |
--===============1426142265356265974== Content-Type: multipart/alternative; boundary="----=_Part_80107_17580452.1228049068778" ------=_Part_80107_17580452.1228049068778 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello, Mike - thanks for the reply! Unfortunately, however, this also doesn't work[1]: Any other clue on what could be wrong? Regards, Igor. [1]. See below - trying Mike's suggestion. As before, calls to amacro fail stating that thefunc is undefined, while direct calls to thefunc work just fine. SISC (1.16.6) #;> (max-stack-trace-depth 16) 0 #;> (module ((thefunc) (amacro thefunc)) (define-macro amacro (lambda () (thefunc))) (define (thefunc) (display "\n\n---\n\n"))) #;> (amacro) Error: undefined variable 'thefunc'. --------------------------- Some stack trace entries may have been suppressed. To see all entries set the dynamic parameter suppressed-stack-trace-source-kinds to '(). #;> (thefunc) --- #;> On Sat, Nov 29, 2008 at 23:53, Mike J. Bell <[email protected]> wrote: > Try: > > (module ((thefunc) (amacro thefunc)) > (define-macro amacro (lambda () (thefunc))) > (define (thefunc) (display "\n\n---\n\n"))) > > This (I think) means make an anonymous module with two exported symbols, > thefunc and amacro (which depends on thefunc). > > Somebody else can I'm sure give you a better theoretical reason why this > works (and what it really means, and why yours does what it does, which > isn't very intuitive to me off hand). > > Mike > > > On Sat, Nov 29, 2008 at 8:02 PM, Igor Hjelmstrom Vinhas Ribeiro < > [email protected]> wrote: > >> Hello! >> >> I am trying to understand how the module system used by SISC >> interacts with the low-level macros that SISC supports. >> >> Specifically, I am trying to figure out why the follow snippet of >> code, an anonymous module that exports amacro and thefunc, >> doesn't work. >> >> (module (amacro thefunc) >> (define-macro amacro (lambda () (thefunc))) >> (define (thefunc) (display "\n\n===\n\n"))) >> >> After I pasted it in the REPL, when I call (amacro) I get: >> >> #;> (amacro) >> Error: undefined variable 'thefunc'. >> console:16:7: <indeterminate call> >> >> Curiously, if I just go ahead and type (thefunc) it works: >> >> #;> (thefunc) >> >> >> === >> >> #;> >> >> Is anyone able to explain to me why this happens? >> >> Regards, >> Igor. >> >> ------------------------------------------------------------------------- >> This SF.Net email is sponsored by the Moblin Your Move Developer's >> challenge >> Build the coolest Linux based applications with Moblin SDK & win great >> prizes >> Grand prize is a trip for two to an Open Source event anywhere in the >> world >> http://moblin-contest.org/redirect.php?banner_id=100&url=/ >> _______________________________________________ >> Sisc-users mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/sisc-users >> >> > > > -- > Mike J. Bell on gmail > ------=_Part_80107_17580452.1228049068778 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello, Mike - thanks for the reply!<br><br> Unfortunately, however, this also doesn't work[1]:<br><br> Any other clue on what could be wrong?<br><br>Regards,<br> Igor.<br><br>[1]. See below - trying Mike's suggestion. As before, calls to<br> amacro fail stating that thefunc is undefined, while direct calls<br>to thefunc work just fine.<br><br>SISC (1.16.6)<br>#;> (max-stack-trace-depth 16)<br>0<br>#;> (module ((thefunc) (amacro thefunc))<br> (define-macro amacro (lambda () (thefunc)))<br> (define (thefunc) (display "\n\n---\n\n")))<br>#;> (amacro)<br>Error: undefined variable 'thefunc'.<br>---------------------------<br>Some stack trace entries may have been suppressed. To see all entries set the dynamic parameter suppressed-stack-trace-source-kinds to '().<br> #;> (thefunc)<br><br><br>---<br><br>#;> <br><br><div class="gmail_quote">On Sat, Nov 29, 2008 at 23:53, Mike J. Bell <span dir="ltr"><<a href="mailto:[email protected]">[email protected]</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> Try:<br><br>(module ((thefunc) (amacro thefunc))<div class="Ih2E3d"><br> (define-macro amacro (lambda () (thefunc)))<br> (define (thefunc) (display "\n\n---\n\n")))<br><br></div>This (I think) means make an anonymous module with two exported symbols, thefunc and amacro (which depends on thefunc).<br> <br>Somebody else can I'm sure give you a better theoretical reason why this works (and what it really means, and why yours does what it does, which isn't very intuitive to me off hand).<br><br>Mike<br><br><br><div class="gmail_quote"> <div><div></div><div class="Wj3C7c"> On Sat, Nov 29, 2008 at 8:02 PM, Igor Hjelmstrom Vinhas Ribeiro <span dir="ltr"><<a href="mailto:[email protected]" target="_blank">[email protected]</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> <div><div></div><div class="Wj3C7c"> Hello!<br><br> I am trying to understand how the module system used by SISC<br>interacts with the low-level macros that SISC supports.<br><br> Specifically, I am trying to figure out why the follow snippet of<br> code, an anonymous module that exports amacro and thefunc,<br> doesn't work.<br><br> (module (amacro thefunc)<br> (define-macro amacro (lambda () (thefunc)))<br> (define (thefunc) (display "\n\n===\n\n")))<br><br> After I pasted it in the REPL, when I call (amacro) I get:<br> <br> #;> (amacro)<br> Error: undefined variable 'thefunc'.<br> console:16:7: <indeterminate call><br><br> Curiously, if I just go ahead and type (thefunc) it works:<br><br> #;> (thefunc)<br><br> <br> ===<br><br> #;> <br><br> Is anyone able to explain to me why this happens?<br><br>Regards,<br><font color="#888888"> Igor.<br> </font><br></div></div>-------------------------------------------------------------------------<br> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge<br> Build the coolest Linux based applications with Moblin SDK & win great prizes<br> Grand prize is a trip for two to an Open Source event anywhere in the world<br> <a href="http://moblin-contest.org/redirect.php?banner_id=100&url=/" target="_blank">http://moblin-contest.org/redirect.php?banner_id=100&url=/</a><br>_______________________________________________<br> Sisc-users mailing list<br> <a href="mailto:[email protected]" target="_blank">[email protected]</a><br> <a href="https://lists.sourceforge.net/lists/listinfo/sisc-users" target="_blank">https://lists.sourceforge.net/lists/listinfo/sisc-users</a><br> <br></blockquote></div><font color="#888888"><br><br clear="all"><br>-- <br>Mike J. Bell on gmail<br> </font></blockquote></div><br> ------=_Part_80107_17580452.1228049068778-- --===============1426142265356265974== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ --===============1426142265356265974== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Sisc-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/sisc-users --===============1426142265356265974==--