IMO there's no conceptual difference between what Neil implemented and other kinds of constant foldings, and having a separate `foo' and `compile-foo' sounds bad in being too low-level, in the same way that using `#define' in C to get inlining leads to bogus code.
Yesterday, Robby Findler wrote: > IMO, I think that it is better to have two names so that people are > not confused by the possibly radically different performance > characteristics when they do things like introduce a variable or > something. > > Robby > > On Thu, Jan 12, 2012 at 4:32 PM, Eli Barzilay <e...@barzilay.org> wrote: > > 50 minutes ago, Neil Toronto wrote: > >> On 01/12/2012 02:25 PM, Eli Barzilay wrote: > >> > 20 minutes ago, Neil Toronto wrote: > >> >> > >> >> This is friggin' awesome. The expression > >> >> > >> >> (compiled-left-arrow-icon '(255 95 78) 24) > >> > > >> > Why is there a `compiled-' in the name? > >> > >> There's also a "left-arrow-icon" function, which renders it at > >> runtime. The "compiled" part means: > >> > >> * This icon is rendered statically. > >> > >> * There are restrictions on the arguments. > > > > I'd expect a single `left-arrow-icon' function, which in some > > cases can be "optimized" by being pre-compiled by a macro. IOW, > > rename the current `compiled-left-arrow-icon' to > > `left-arrow-icon', and rename the `left-arrow-icon' to some > > internal name that is not exposed. Then make it so that if it > > isn't possible to to pre-compile the form statically, then it > > expands to the dynamic one. This way people don't have to worry > > about implementation issues, and simply use the > > "function". Possibly also spit out some log warning if it can't > > be compiled statically, for debugging. > > > > > >> > I think that it was on the r6rs list that during some > >> > macro-related flame I posted something about invoking a C > >> > compiler as part of a macro expansion, and someone replied that > >> > it sounded crazy. (I think that the argument was that macros > >> > should really only do simple `syntax-rules'-like things.) > >> > >> My mad-scientist advisor has actually done this. (I'm going to > >> keep a tally of the number of times I write that.) I used it once > >> to make building an FFI easier. What was it called... "Super C"? > >> Not terribly portable, but very cool. > > > > Yes, that's what I was referring to in that post. > > > > > > A few minutes ago, Jay McCarthy wrote: > >> > >> I use it every year teaching PLAI so I can give little C > >> examples. > > > > Good idea... (But I don't do C in my course... Maybe I should, > > just to make the interoperability point...) -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! _________________________ Racket Developers list: http://lists.racket-lang.org/dev