[racket-dev] Caching rendered icons

From: Eli Barzilay (eli at barzilay.org)
Date: Fri Jan 13 15:29:18 EST 2012

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 <eli at 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!



Posted on the dev mailing list.