all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Peter Keller <psilord@cs.wisc.edu>
To: help-gnu-emacs@gnu.org
Subject: Re: What is the best way to navigate #ifdef and #endif in C program
Date: Thu, 5 Aug 2010 21:10:48 +0000 (UTC)	[thread overview]
Message-ID: <i3f9co$gss$1@news.eternal-september.org> (raw)
In-Reply-To: 57db02c5-32db-4483-863e-a9177e4e6003@w30g2000yqw.googlegroups.com

In comp.lang.lisp Elena <egarrulo@gmail.com> wrote:
> On 4 Ago, 17:09, Peter Keller <psil...@cs.wisc.edu> wrote:
>> Specifically:http://letoverlambda.com/index.cl/guest/chap5.html#sec_4
>>
>> Would show you how to write a macro such that it adds Scheme's tail call
>> optimized "named let" into Common Lisp. ?This goes beyond the concept
>> of syntactic sugar and enters the domain of pure code transformation.
> 
> Indeed, code transformation is what sets CL's macros apart. However,
> TCO is much more than that. Read here:
> 
> http://stackoverflow.com/questions/2181852/tail-call-elimination-in-clojure

After reading that, I assert that I don't know how to take base CL
and make it tail recursive since redefining things like defun and
whatnot lead to package lock errors. Even things like define-compiler-macro
can't redefine any of the CL macros or functions.

One probably could have success if they created forms like defun-tco,
labels-tco, flet-tco, etc which kept track of their code expansions
and rewrote them to be tco. But at that point you've implemented a
tco enforced lisp dialect on top of CL.

> However, TCO could also just not be possible in CL because of its
> design:
> 
> http://www.cliki.net/Tail%20Recursion

It may be true, I don't know.

-pete


  reply	other threads:[~2010-08-05 21:10 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-03  0:31 What is the best way to navigate #ifdef and #endif in C program Daniel (Youngwhan)
2010-08-04  4:45 ` [OT] " Fren Zeee
2010-08-04 10:27   ` Pascal J. Bourguignon
2010-08-04 10:38     ` Alessio Stalla
2010-08-04 11:57       ` Pascal J. Bourguignon
2010-08-04 14:37     ` Elena
2010-08-04 14:59       ` Arzobispo Andante
2010-08-04 15:09       ` Peter Keller
2010-08-04 15:35         ` Peter Keller
2010-08-05 19:04         ` Elena
2010-08-05 21:10           ` Peter Keller [this message]
2010-08-05 23:46             ` Pascal J. Bourguignon
     [not found]           ` <8c27aoFij2U1@mid.individual.net>
2010-08-06 11:17             ` Elena
2010-08-06 13:55               ` Pascal J. Bourguignon
2010-08-04 16:20   ` Elena
2010-08-04 16:23   ` Elena
2010-08-05 18:00   ` Emmy Noether
2010-08-06  4:59   ` [OT] " Aaron W. Hsu
2010-08-05 17:30 ` Johan Bockgård
2010-08-06 17:03 ` Alan Mackenzie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='i3f9co$gss$1@news.eternal-september.org' \
    --to=psilord@cs.wisc.edu \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.