From justintalbot at gmail.com  Fri Dec 13 14:36:58 2013
From: justintalbot at gmail.com (Justin Talbot)
Date: Fri, 13 Dec 2013 05:36:58 -0800
Subject: [Rd] Status of reserved keywords and builtins
Message-ID: <CALLn38MY7tqe=fMCJf9qk5Y3itoniFSZKgN14cDBZoqZcUuYiA@mail.gmail.com>

>
> It would have those benefits, but it would be harder to prototype
> changes by actually replacing the `if` function.  Implementations that
> want to optimize the calls have other ways to do it, e.g. the sorts of
> things the compiler does.
>

Does anyone actually prototype changes to the `if` function?

Allowing users to replace the definitions of reserved keywords and
builtins is horribly expensive performance-wise with or without
compilation. If you look at the compiler package, the way it optimizes
these function calls is by breaking the language spec. See the
beginnings of sections 5 and 6 of Luke's write up
(http://homepage.stat.uiowa.edu/~luke/R/compiler/compiler.pdf), noting
that the *default* optimization level is 2, at which level, "In
addition to the inlining permitted by Level 1, functions that are
syntactically special or are considered core language functions and
are found via the global environment at compile time may be inlined."

This is an area where a small change to the language spec would impact
essentially no users and would result in a language that could be
executed much more efficiently.

Justin Talbot



[Rd] Status of reserved keywords and builtins
Justin Talbot