[plt-scheme] [redex] language keywords
Is this 'where' clause something that was introduced somewhat recently?
I remember from my first redex examples that the way to introduce a new identifier for instance was with ,(term-let ...).
The same question goes for the definition of metafunctions. For instance, the definition of lambda-v on the web:
http://redex.plt-scheme.org/lam-v.html
for the subst metafunction, uses ,(term-let ...) to introduce (x_new ...)
It seems the preferred way to do that now would be with a where clause, right?
(I was surprised actually when seeing in the doc that term-let was low-level and not meant to use, while it was--and still is in some cases-- used in the simple introductory examples of plt redex)
Thanks,
-- Éric
On Jun 3, 2010, at 9:15 AM, Robby Findler wrote:
> Oh, great!
>
> Robby
>
> On Thu, Jun 3, 2010 at 8:12 AM, Eric Tanter <etanter at dcc.uchile.cl> wrote:
>> Thanks all,
>>
>> I'm moving to 'where' everywhere, and it seems to work. It's even much more readable with where clauses than with the collections of (nested) term-lets that I had.
>>
>> -- Éric
>>
>>
>> On Jun 3, 2010, at 2:36 AM, Robby Findler wrote:
>>
>>> It would be good to avoid term-let, I think, if you can use things
>>> like 'where' in the reduction relation instead. But we'd probably need
>>> to see an example use if you don't see how to do the transformation.
>>>
>>> Robby
>>>
>>> On Wed, Jun 2, 2010 at 9:51 PM, Eric Tanter <etanter at dcc.uchile.cl> wrote:
>>>> Yes, I do use term-let and that's (at least up to now) exactly where the
>>>> problem manifests!
>>>>
>>>> Should I be using something else?
>>>>
>>>> -- Éric
>>>>
>>>> On Jun 2, 2010, at 22:40, Casey Klein <clklein at eecs.northwestern.edu> wrote:
>>>>
>>>>> On Wed, Jun 2, 2010 at 9:21 PM, Carl Eastlund <cce at ccs.neu.edu> wrote:
>>>>>>
>>>>>> On Wed, Jun 2, 2010 at 10:15 PM, Casey Klein
>>>>>> <clklein at eecs.northwestern.edu> wrote:
>>>>>>>
>>>>>>> On Wed, Jun 2, 2010 at 9:02 PM, Eric Tanter <etanter at dcc.uchile.cl>
>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> Is there something as simple/direct as the list of keywords in
>>>>>>>>>> syntax-rules/syntax-case?
>>>>>>>>>> If not, any alternative suggestion?
>>>>>>>>>>
>>>>>>>>>> Thanks!
>>>>>>>>>>
>>>>>>>>>> -- Éric
>>>>>>>>>
>>>>>>>>> Take a look at variable-prefix. In my latest Redex work, variables
>>>>>>>>> all start with x, y, or z, and I just have to avoid any keywords that
>>>>>>>>> start with those.
>>>>>>>>
>>>>>>>> Thanks Carl,
>>>>>>>>
>>>>>>>> I'm using these as well, actually.
>>>>>>>> A problem I have is that, for readability, I have a non-terminal which
>>>>>>>> is define as (x >> x) where '>>' is a keyword. I know I could just use (x x)
>>>>>>>> for exactly the same, but it does enhance readability.
>>>>>>>> The problem is that >> is considered as a pattern variable...
>>>>>>>>
>>>>>>>> with macros I could just say:
>>>>>>>> (syntax-rules (>>)
>>>>>>>> ((x >> x) ...))
>>>>>>>>
>>>>>>>> Any idea?
>>>>>>>>
>>>>>>>
>>>>>>> I don't follow. The variables in a Redex pattern are always named
>>>>>>> after non-terminals, so I don't see how >> could be treated as a
>>>>>>> pattern variable.
>>>>>>>
>>>>>>> Do you mean that >> matches one of your six classes of variables?
>>>>>>
>>>>>> Is it possible Eric is using one of the forms that match using
>>>>>> syntax-case instead of the Redex pattern matcher? Do term-let and
>>>>>> where clauses still work that way?
>>>>>
>>>>> Oh, good thinking! term-let uses syntax-case, but where clauses no longer
>>>>> do.
>>>>>
>>>>>> (And if not, Eric, what version of PLT Scheme are you using?)
>>>>>>
>>>> _________________________________________________
>>>> For list-related administrative tasks:
>>>> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>>>>
>>
>>