Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-11 Thread Stephen Chang
Thanks Robby. This will be very handy. On Sat, Feb 11, 2012 at 11:01 AM, Matthias Felleisen wrote: > > Thanks, this looks just like what we have needed for a while. -- Matthias > > > > On Feb 11, 2012, at 4:26 AM, Robby Findler wrote: > >> Hi Stephen: I've added define-union-language to Redex no

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-11 Thread Matthias Felleisen
Thanks, this looks just like what we have needed for a while. -- Matthias On Feb 11, 2012, at 4:26 AM, Robby Findler wrote: > Hi Stephen: I've added define-union-language to Redex now. For the > example below, you'd write this: > > > #lang racket > (require redex) > > (define-language L1 >

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-11 Thread Robby Findler
Hi Stephen: I've added define-union-language to Redex now. For the example below, you'd write this: #lang racket (require redex) (define-language L1 (e 1)) (define-language L2 (f 2)) (define-union-language L L1 L2) (define-metafunction L L1->L2 : e -> f [(L1->L2 1) 2]) or you could also wri

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-07 Thread Robby Findler
On Tue, Feb 7, 2012 at 12:50 PM, Matthias Felleisen wrote: > > On Feb 7, 2012, at 1:28 PM, Robby Findler wrote: > >> One other design question: would having the same non-terminal name in >> both languages be allowed > > > Yes, absolutely, it's critical. Just to be clear, I'm asking about the case

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-07 Thread Matthias Felleisen
On Feb 7, 2012, at 1:54 PM, Robby Findler wrote: > On Tue, Feb 7, 2012 at 12:50 PM, Matthias Felleisen > wrote: >> >> On Feb 7, 2012, at 1:28 PM, Robby Findler wrote: >> >>> One other design question: would having the same non-terminal name in >>> both languages be allowed >> >> >> Yes, abso

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-07 Thread Matthias Felleisen
On Feb 7, 2012, at 1:28 PM, Robby Findler wrote: > One other design question: would having the same non-terminal name in > both languages be allowed Yes, absolutely, it's critical. _ Racket Developers list: http://lists.racket-lang.org/dev

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-07 Thread Sam Tobin-Hochstadt
On Tue, Feb 7, 2012 at 1:28 PM, Robby Findler wrote: > >> 2. Support `define-union-language', without worrying too much about >> its typesetting, because it would be primarily used for defining these >> metafunctions and not explicitly described in a paper. > > I see. I'll think more about this op

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-07 Thread Robby Findler
On Tue, Feb 7, 2012 at 12:24 PM, Sam Tobin-Hochstadt wrote: > On Tue, Feb 7, 2012 at 12:18 PM, Robby Findler > wrote: >> On Tue, Feb 7, 2012 at 10:21 AM, Sam Tobin-Hochstadt >> wrote: >>> On Mon, Feb 6, 2012 at 9:18 PM, Robby Findler >>> wrote: Actually, on second thought, I'm not yet sur

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-07 Thread Sam Tobin-Hochstadt
On Tue, Feb 7, 2012 at 12:18 PM, Robby Findler wrote: > On Tue, Feb 7, 2012 at 10:21 AM, Sam Tobin-Hochstadt > wrote: >> On Mon, Feb 6, 2012 at 9:18 PM, Robby Findler >> wrote: >>> Actually, on second thought, I'm not yet sure how the typesetting is >>> going to go. Say you have something like

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-07 Thread Robby Findler
On Tue, Feb 7, 2012 at 10:21 AM, Sam Tobin-Hochstadt wrote: > On Mon, Feb 6, 2012 at 9:18 PM, Robby Findler > wrote: >> Actually, on second thought, I'm not yet sure how the typesetting is >> going to go. Say you have something like this: >> >>  (define-language L1 >>    (a ... somestuff ...)) >>

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-07 Thread Matthias Felleisen
On Feb 7, 2012, at 11:21 AM, Sam Tobin-Hochstadt wrote: > > In most papers that I see, nothing other than context would > disambiguate them, and that would be plenty. > > For example, take the following paper: > http://dl.acm.org/citation.cfm?doid=1596550.1596592 > > That paper has a large num

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-07 Thread Sam Tobin-Hochstadt
On Mon, Feb 6, 2012 at 9:18 PM, Robby Findler wrote: > Actually, on second thought, I'm not yet sure how the typesetting is > going to go. Say you have something like this: > >  (define-language L1 >    (a ... somestuff ...)) > >  (define-metafunction L1 >     f : a -> a >     [(f a) ...somestuff.

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-07 Thread Matthias Felleisen
You're raising an issue that already exists, right? Say we have only this: > (define-language L1 >(a ... somestuff ...)) > > (define-metafunction L1 > f : a -> a > [(f a) ...somestuff...]) > > (define-language L2 >(a ... somedifferentstuff ...)) > > (define-metafunction

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-06 Thread Robby Findler
Actually, on second thought, I'm not yet sure how the typesetting is going to go. Say you have something like this: (define-language L1 (a ... somestuff ...)) (define-metafunction L1 f : a -> a [(f a) ...somestuff...]) (define-language L2 (a ... somedifferentstuff ...))

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-06 Thread Matthias Felleisen
Looks like a good design, and we really want this. Thanks -- Matthias On Feb 6, 2012, at 11:16 AM, Robby Findler wrote: > Something like that should be straightforward to accommodate in Redex. > I'm imagining: > > (define-union-language ( ...) > ( ...) ...) > > where > >::= | (

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-06 Thread Robby Findler
Something like that should be straightforward to accommodate in Redex. I'm imagining: (define-union-language ( ...) ( ...) ...) where ::= | ( ) The extra non-terminals and productions would be like a immediate language extension to the union'd language (and indeed, would make defi

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-06 Thread Matthias Felleisen
I have just read a dissertation with something like this. The type setting used all bold for one language and plain font for the other. Hard to read but you could figure it out. The grammar, however, used annotated nonterminals. The experience suggests that doing this plainly is a bad experien

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-06 Thread Robby Findler
How will you disambiguate them on the printed page for readers of your paper? Robby On Sun, Feb 5, 2012 at 9:36 PM, Neil Toronto wrote: > I think in my case I actually do want the same nonterminal names. The > higher-order language has lambdas while the first-order language doesn't. > The first-

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-05 Thread Neil Toronto
I think in my case I actually do want the same nonterminal names. The higher-order language has lambdas while the first-order language doesn't. The first-order language has an outer `let' while the higher-order language has no `let'. Every other kind of expression is the same and has the same r

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-05 Thread Robby Findler
Yes, you guys are right-- this is not supported. You'd have to put everything into a single language to make it work. I've shied away from this because it seems overly complicated, but also because the language names ("L1" and "L2" in Stephen's example) don't show up anywhere in the typeset versio

Re: [racket-dev] redex metafunction contract for two separate languages?

2012-02-05 Thread Neil Toronto
On 02/05/2012 03:11 PM, Stephen Chang wrote: I want to write a redex metafunction contract that goes between two languages. Is there currently a way to do this? For example, #lang racket (require redex) (define-language L1 (e 1)) (define-language L2 (f 2)) (define-metafunction L1 L1->

[racket-dev] redex metafunction contract for two separate languages?

2012-02-05 Thread Stephen Chang
I want to write a redex metafunction contract that goes between two languages. Is there currently a way to do this? For example, #lang racket (require redex) (define-language L1 (e 1)) (define-language L2 (f 2)) (define-metafunction L1 L1->L2 : e -> f [(L1->L2 1) 2]) > (term (L1->L2 1))